整体概述:
我正在开发一个搜索表单,在该表单中,用户可以选择一个或多个筛选条件来过滤搜索结果。其中一个条件与子元素关系有关。
我试图创建一个扩展方法给 IQueryable<Parent>
,以便在我的“链接”中使用。
目前(截至目前为止)的方法签名如下:
public static IQueryable<Parent> ContainsChild(this IQueryable<Parent> qry, int[] childrenIDs)
父表和子表:
Parent
ParentID
Name
Description
Child
ParentID (FK)
AnotherID (from a lookup table)
Selection criteria:
int[] ids = new int[3] {1,2,3};
使用方法如下:
var parents = repository.All() //returns Iqueryable<Parent>
public IQueryable<Parent> Search(Search seach){
if (search.Criteria1 != null){
parents = parents.FilterByFirstCriteria(search.Criteria1);
}
if (search.ChildrenIDs != null){ //ChildrenIDs is an int[] with values 1,2,3
parents = parents.ContainsChild(search.ChildrenIDs)
}
}
我试图弄清楚如何创建一个ContainsChild方法,该方法返回一个IQueryable,其中父项至少有一个子项的AnotherID在ids数组中。
(我试图使用EF4来完成这个任务)
非常感谢您的帮助。