Я думаю, что мы в основном ищем метод расширения, который мог бы принимать IQueryable и возвращать IQueryable на основе всего оператора запроса, а не только оператора where.
Пример того, что мы хотели бы для метода поиска:
IRepository<Person> repository = new Repository<Person>();
var results = repository.GetQuery().Include("Names").Search([dynamic linq here]);
В настоящее время у нас есть место, где мы создаем динамический оператор linq внутри метода where.
IRepository<Person> repository = new Repository<Person>();
var results = repository.GetQuery().Include("Names").Where([dynamic linq here]);
Проблема с этим подходом заключается в том, что мы хотим включить SelectMany и Select в фактический динамический запрос linq. Вы не можете использовать SelectMany внутри метода Where, если вы на самом деле не входите в подсвойства подсвойств. Мы хотели бы сделать что-то вроде следующего оператора динамического linq.
SelectMany("Names").Where("LastName.Contains(@0)", "Smith").Select("Person")