4
大きな画像:Linqは子供の基準に基づいて親を選択しています
私は検索結果をフィルタリングするための条件を1つ以上選択できる検索フォームを作成しています。基準の1つは、子関係に関連しています。
Iqueryable<Parent>
に拡張メソッドを作成しようとしていますので、私は「チェーン」の一部として使用できます。
(今のところ)メソッドのシグネチャは次のとおりです。
public static IQueryable<Parent> ContainsChild(this IQueryable<Parent> qry, int[] childrenIDs)
親テーブルと子テーブル:
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)
}
}
:
Parent
ParentID
Name
Description
Child
ParentID (FK)
AnotherID (from a lookup table)
Selection criteria:
int[] ids = new int[3] {1,2,3};
使い方はこのようなものになるだろう私が理解しようとしているのは、IQueryable<Parent>
を返すContainsChildメソッドを作成する方法です。両親にはids
の配列にAnotherID
の子が少なくとも1人あります。
(私はこれを達成するためにEF4を使用しようとしている)
完全に理解すべてのヘルプ。
シンプルで上品です。ありがとう、素晴らしい仕事! – nandos