Combina dos expresiones lambda con expresión interna

Tengo la siguiente estructura de clase:

    public class Order
    {
        public User User { get; set; }
        public string Name { get; set; }
    }

    public class Authentication
    {
        public string Email { get; set; }      
    }

    public class User
    {
        public string Name { get; set; }
        public List<Authentication> Auths { get; set; }
    }

Estoy tratando de construir una expresión en tiempo de ejecución para buscar entidades por User.Name, Order.Name o User.Auths.Email

Hay tres expresiones que intento combinar:

    Expression<Func<Order, bool>> usernameExpression = order => order.Name.Contains(searchValue);
    Expression<Func<Order, bool>> nameExpression = order => order.User.Name.Contains(searchValue);
    Expression<Func<Order, bool>> emailExpression = order => order.User.Auths.Any(auth => auth.Email.Contains(searchValue));

Combiné con éxito dos primeras expresiones usando ParameterReplacer de este hilo:Cómo combinar dos lambdas

Sin embargo, al combinar la expresión resultante con la expresión de correo electrónico, aparece el siguiente error:

Property 'System.String Email' is not defined for type Order'

Parece que el alcance no sabe nada sobre el parámetro interno 'auth'. ¿Es posible crear la expresión sin reconstruirla desde cero?

Respuestas a la pregunta(1)

Su respuesta a la pregunta