Dividir una expresión en C # usando Expression.AndAlso () provoca una excepción

En mi proyecto escrito en C #, he encontrado un predicado ENORME que se usa en este método de linq:

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

Este predicado funciona perfectamente, pero es una condición tan difícil que luché mucho antes de entenderlo. Me gustaría que fuera legible. Entonces escribí varias expresiones.

Pero tengo una excepción de tiempo de ejecución como esta:El temido "parámetro no estaba vinculado en la excepción de expresión de consulta LINQ to Entities" especificada

Quería probar la respuesta pero todavía no entiendo por qué el parámetro (c) es un problema, vea:

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

Mi pregunta es entender por qué ocurre esta excepción cuando finalmente volví al gran predicado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta