我有两个表:一个WorkItem表和一个WorkItemNote表.如何返回符合特定条件的WorkItem和所有WorkItemNotes?
我认为这应该很简单,几乎就像有条件的"包含"一样,对吧?
Ale*_*mes 38
假设WorkItem
有很多WorkItemNotes
你可以这样做:
var intermediary = (from item in ctx.WorkItems
from note in item.Notes
where note.SomeProp == SomeValue
select new {item, note}).AsEnumerable();
Run Code Online (Sandbox Code Playgroud)
这会为每个WorkItemNote
匹配产生一个匿名元素,并保持相应的元素WorkItem
.
EF标识解析确保WorkItem
如果其具有WorkItemNotes
与标准匹配的多个,则多次返回相同(通过引用).
我假设接下来你想回到刚好WorkItems
,就像这样:
var workItems = intermediary.Select(x => x.item).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)
那么如果你现在这样做:
foreach(var workItem in workItems)
{
Console.WriteLine(workItem.Notes.Count)
}
Run Code Online (Sandbox Code Playgroud)
您将看到WorkItemNotes
与原始过滤器匹配的内容已添加到每个过滤器的Notes集合中workItem
.
这是因为称为关系修复的东西.
也就是说,这给了你想要条件的东西.
希望这可以帮助
归档时间: |
|
查看次数: |
7044 次 |
最近记录: |