AndAuch zwischen mehreren Ausdrücken <Func <T, bool >>: wird aus dem Gültigkeitsbereich referenziert

Ich habe 3 Prädikate, ich möchte ein machenAndAlso zwischen. Ich habe mehrere Muster auf der Tafel gefunden, kann aber mein Problem nicht lösen.

Diese Prädikate sind:Expression<Func<T, bool>>

Ich habe diesen Code:

Expression<Func<T, bool>> predicate1 = ......;
Expression<Func<T, bool>> predicate2 = ......;
Expression<Func<T, bool>> predicate3 = ......;

Ich erstelle eine Erweiterungsmethode, um ein "AndAlso" zu erstellen:

public static Expression<Func<T, bool>> AndAlso<T>(
    this Expression<Func<T, bool>> expr, 
    Expression<Func<T, bool>> exprAdd)
{
    var param = Expression.Parameter(typeof(T), "p");
    var predicateBody = Expression.AndAlso(expr.Body, exprAdd.Body);
    return Expression.Lambda<Func<T, bool>>(predicateBody, param);

    //Tried this too
    //var body = Expression.AndAlso(expr.Body, exprAdd.Body);
    //return Expression.Lambda<Func<T, bool>>(body, expr.Parameters[0]);
}

Ich benutze so:

var finalPredicate = predicate1
    .AndAlso<MyClass>(predicate2)
    .AndAlso<MyClass>(predicate3);

Das Prädikat sieht so aus:

Wenn ich in einer Abfrage verwende:

var res =  myListAsQueryable().Where(finalPredicate).ToList<MyClass>();

Ich erhalte diesen Fehler:Die Variable 'p' vom Typ 'BuilderPredicate.MyClass' wurde aus dem Bereich '' referenziert, ist jedoch nicht definiert

Können Sie mir sagen, was los ist?

Danke vielmals,

Antworten auf die Frage(1)

Ihre Antwort auf die Frage