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.

questionAnswers(1)

yourAnswerToTheQuestion