Я думаю, что мы в основном ищем метод расширения, который мог бы взять 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")