質問: WorkItemテーブルとWorkItemNoteテーブルの2つのテーブルがあります。特定の基準を満たすWorkItemとすべてのWorkItemNotesを返す方法を教えてください。 私はこれが単純であるべきだと思います、条件付きの「含む」のようにね。
回答: 私はこれについてのコツを書くことを計画していました、しかしあなたの質問は私にパンチを打たせました。 `WorkItem`に多数の`WorkItemNotes`があると仮定し`WorkItemNotes` あなたはこれを行うことができます: ``` var intermediary = (from item in ctx.WorkItems from note in item.Notes where note.SomeProp == SomeValue select new {item, note}).AsEnumerable(); ``` これにより、一致する各`WorkItemNote`に対して匿名の要素が生成され、対応する`WorkItem`も保持され`WorkItem` 。 EF ID解決は、基準に一致する複数の`WorkItemNotes`が同じ`WorkItem` (参照による)に複数回返されることを保証します。 次は、次のように`WorkItems`だけに戻りたいと思い`WorkItems` 。 ``` var workItems = intermediary.Select(x => x.item).Distinct().ToList(); ``` あなたが今これをすれば: ``` foreach(var workItem in workItems) { Console.WriteLine(workItem.Notes.Count) } ``` 元のフィルタと一致する`WorkItemNotes`が各`workItem` Notesコレクションに追加されていることが`workItem`ます。 これはRelationship Fixupと呼ばれるものが原因です。 すなわちこれはあなたが条件付き包含を望むものをあなたに与える。 お役に立てれば アレックス