Разделение выражения в C # с использованием Expression.AndAlso () вызывает исключение

В моем проекте, написанном на C #, я обнаружил ОГРОМНЫЙ предикат, который используется в этом методе linq:

public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);

этот предикат работает отлично, но это так много условий, что я много боролся, прежде чем понять его. Я хотел бы сделать это читабельным. Поэтому я написал несколько выражений.

Но у меня есть исключение во время выполнения, например:Страшный «параметр не был связан в указанном выражении запроса LINQ to Entities»

Я хотел попробовать ответ, но я все еще не понимаю, почему параметр (c) является проблемой, см .:

// in a method
Func<string, Expression<Func<TEntity, bool>>> expr1 = (query) => return (c) => ... ;
Func<string, Expression<Func<TEntity, bool>>> expr2 = (query) => return  (c) => ... ;

var expr = Expression.AndAlso(expr1("a string").Body, expr2("same string").Body);

return Expression.Lambda<Func<TEntity, bool>>(expr , expr1("a string").Parameters[0]);

Мой вопрос состоит в том, чтобы понять, почему происходит это исключение, когда я наконец вернулся к огромному предикату.

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

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