¿Obteniendo todos los mensajes de InnerException (s)?

¿Hay alguna forma de escribir un código de "mano corta" estilo LINQ para caminar a todos los niveles de InnerException (s) de Exception lanzados? Preferiría escribirlo en su lugar en lugar de llamar a una función de extensión (como se muestra a continuación) o heredar laException clase

static class Extensions
{
    public static string GetaAllMessages(this Exception exp)
    {
        string message = string.Empty;
        Exception innerException = exp;

        do
        {
            message = message + (string.IsNullOrEmpty(innerException.Message) ? string.Empty : innerException.Message);
            innerException = innerException.InnerException;
        }
        while (innerException != null);

        return message;
    }
}; 

Respuestas a la pregunta(22)

Su respuesta a la pregunta