Общая картина:
Я работаю над формой поиска, где пользователь может выбрать один или несколько критериев для фильтрации результатов поиска.Один из критериев связан с дочерними отношениями.
Я пытаюсь создать метод расширения для 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<Parent>
, где у родителей есть хотя бы один ребенок с AnotherID
в массиве ids
.
(I 'я пытаюсь использовать EF4 для достижения этой цели)
Любая помощь полностью оценена.