Dividir uma expressão em C # usando Expression.AndAlso () causa uma exceção
No meu projeto escrito em C #, encontrei um predicado ENORME usado neste método do linq:
public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);
esse predicado funciona perfeitamente, mas tem tanta condição que lutei muito antes de entendê-lo. Eu gostaria de torná-lo legível. Então eu escrevi várias expressões.
Mas eu tenho uma exceção de tempo de execução como esta:A temida "parâmetro não foi vinculada na exceção de expressão de consulta LINQ to Entities especificada"
Eu queria tentar a resposta, mas ainda não entendo por que o parâmetro (c) é um problema, consulte:
// 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]);
Minha pergunta é entender por que essa exceção ocorre quando finalmente voltei ao enorme predicado.