Y también entre varias expresiones <Func <T, bool >>: referenciadas desde el alcance
Tengo 3 predicados, me gustaría hacer unAndAlso
Entre. Encontré varias muestras en el tablero, pero no puedo resolver mi problema.
Estos predicados son:Expression<Func<T, bool>>
Tengo este codigo
Expression<Func<T, bool>> predicate1 = ......;
Expression<Func<T, bool>> predicate2 = ......;
Expression<Func<T, bool>> predicate3 = ......;
Creo un método de extensión para hacer un "Y también":
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]);
}
Yo uso así:
var finalPredicate = predicate1
.AndAlso<MyClass>(predicate2)
.AndAlso<MyClass>(predicate3);
El predicado mira esto:
Cuando uso en una consulta:
var res = myListAsQueryable().Where(finalPredicate).ToList<MyClass>();
Me sale este error:variable 'p' de tipo 'BuilderPredicate.MyClass' referenciada desde el alcance '', pero no está definida
¿Podrías decirme que está mal?
Muchas gracias,