Como criar uma LambdaExpression a partir de uma LambdaExpression existente sem compilar

Eu quero combinar duas LambdaExpressions sem compilá-la

Isto é o que parece se eu os compilar:

    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, essa não é a maneira mais rápida de obter a expressão de destino a partir dos argumentos fornecidos. Além disso, torna-o incompatível com provedores de consulta como LINQ to SQL que não suportam chamadas de método C #.

Pelo que li, parece que a melhor abordagem é criar umExpressionVisitor classe. No entanto, isso parece ser uma tarefa bastante comum. Alguém sabe de uma base de código-fonte aberto existente que fornece esse tipo de funcionalidade? Caso contrário, qual é a melhor maneira de abordar oExpressionVisitor para torná-lo o mais genérico possível?

questionAnswers(1)

yourAnswerToTheQuestion