И также между несколькими выражениями <Func <T, bool >>: ссылка из области видимости

У меня есть 3 предиката, я хотел бы сделатьAndAlso между. Я нашел несколько образцов на доске, но не могу решить мою проблему.

Эти предикаты:Expression<Func<T, bool>>

У меня есть этот код:

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

Я создаю метод расширения, чтобы сделать «AndAlso»:

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]);
}

Я использую так:

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

Предикат выглядит так:

Когда я использую в запросе:

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

Я получаю эту ошибку:переменная 'p' типа 'BuilderPredicate.MyClass', на которую ссылается область действия '', но она не определена

Не могли бы вы сказать мне, что не так?

Большое спасибо,

Ответы на вопрос(1)

Ваш ответ на вопрос