簡體   English   中英

具有條件包含的EF查詢

[英]EF Query With Conditional Include

我有兩個表:一個WorkItem表和一個WorkItemNote表。 如何返回符合特定條件的WorkItem和所有WorkItemNotes?

我認為這應該很簡單,幾乎就像有條件的“包含”一樣,對吧?

我一直在計划寫一個關於這個的小費 ,但是你的問題讓我很震驚。

假設WorkItem有許多WorkItemNotes

你可以這樣做:

var intermediary = (from item in ctx.WorkItems
              from note in item.Notes
              where note.SomeProp == SomeValue
              select new {item, note}).AsEnumerable();

這會為每個匹配的WorkItemNote生成一個匿名元素,並保存相應的WorkItem

EF標識解析確保如果具有與條件匹配的多個WorkItemNotes ,則多次返回相同的WorkItem (通過引用)。

我假設接下來你只想回到WorkItems ,就像這樣:

var workItems = intermediary.Select(x => x.item).Distinct().ToList();

那么如果你現在這樣做:

foreach(var workItem in workItems)
{
   Console.WriteLine(workItem.Notes.Count)
}

您將看到與原始過濾器匹配的WorkItemNotes已添加到每個workItem的Notes集合中。

這是因為稱為關系修復的東西。

也就是說,這給了你想要條件的東西。

希望這可以幫助

亞歷克斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM