Criar predicado com uma BinaryExpression contendo vários parâmetros

é possível gerar dinamicamente esse predicado usandoLambdaExpressions?

Expression<Func<Test, bool>> predicate = t =>
    t.Levels.Any(l =>
        l.LevelDetails.Any( ld =>
            ld.LevelDate > DbFunctions.AddDays(t.TestDate, 1)
        )
    );

Enquanto os parâmetros no interiorBinaryExpression são idênticos ou a parte correta da expressão é constante, não há problema. Mas a expressão de exemplold.LevelDate > DbFunctions.AddDays (t.TestDate, 1) contém dois diferentesExpressionParameters que são independentes um do outro. O que estou procurando é algo como isto:

Expression<Func<LevelDetail, DateTime?>> left = 
    ld => ld.LevelDate;
Expression<Func<Test, DateTime?>> right = 
    t => DbFunctions.AddDays(t.TestDate, 1);

BinaryExpression expr = 
    Expression.GreaterThan(
        ((LambdaExpression)left).Body,
        ((LambdaExpression)right).Body
    );
Expression<Func<Test, bool>> predicate = t =>
    t.Levels.Any(l =>
        l.LevelDetails.Any( **expr** )
    );

class Test {
    public DateTime TestDate { get; set; }
    public virtual ICollection<Level> Levels { get; set; }
}
class Level {
    public virtual ICollection<LevelDetail> LevelDetails { get; set; }
}
class LevelDetail {
    public DateTime LevelDate { get; set; }
}

Atenciosamente!

questionAnswers(3)

yourAnswerToTheQuestion