我认为我们基本上是在寻找一种可以接收 IQueryable 并基于整个查询语句而不只是 where 语句返回 IQueryable 的扩展方法。
我们希望搜索方法的示例:
IRepository<Person> repository = new Repository<Person>();
var results = repository.GetQuery().Include("Names").Search([dynamic linq here]);
我们目前在 where 方法中构建了一个动态 linq 语句
IRepository<Person> repository = new Repository<Person>();
var results = repository.GetQuery().Include("Names").Where([dynamic linq here]);
这种方法的问题是我们希望在实际的动态 linq 查询中包含 SelectMany 和 Select。除非您实际进入子属性的子属性,否则您不能在 Where 方法中使用 SelectMany。我们想做类似下面的动态 linq 语句。
SelectMany("Names").Where("LastName.Contains(@0)", "Smith").Select("Person")