Cómo construir una LambdaExpression a partir de una LambdaExpression existente sin compilar

Quiero combinar dos LambdaExpressions sin compilarlas.

Esto es lo que parece si los compilo:

    public Expression<Func<TContainer,bool>> CreatePredicate<TContainer,TMember>(
        Expression<Func<TContainer,TMember>> getMemberExpression, 
        Expression<Func<TMember,bool>> memberPredicateExpression)
    {
        return x => memberPredicateExpression.Compile()(getMemberExpression.Compile()(x));
    }

Obviamente, esa no es la forma más rápida de obtener la expresión de destino de los argumentos proporcionados. Además, lo hace incompatible con proveedores de consultas como LINQ to SQL que no admiten llamadas al método C #.

e lo que he leído parece que el mejor enfoque es construir unExpressionVisitor clase. Sin embargo, esto parece que podría ser una tarea bastante común. ¿Alguien sabe de una base de código fuente abierto existente que proporcione este tipo de funcionalidad? Si no, ¿cuál es la mejor manera de acercarse a laExpressionVisitor para que sea lo más genérico posible?

Respuestas a la pregunta(1)

Su respuesta a la pregunta