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,