Разделение выражения в 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]);
Мой вопрос состоит в том, чтобы понять, почему происходит это исключение, когда я наконец вернулся к огромному предикату.