Я планировал написать подсказку по этому вопросу, но ваш вопрос превзошел меня.
Предполагая, что 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 гарантирует, что один и тот же WorkItem
(по ссылке) возвращается несколько раз, если он имеет несколько WorkItemNotes
, которые соответствуют критериям.
Я предполагаю, что затем вы захотите просто вернуться к WorkItems
, вот так:
var workItems = intermediary.Select(x => x.item).Distinct().ToList();
Тогда, если вы сейчас сделаете это:
foreach(var workItem in workItems)
{
Console.WriteLine(workItem.Notes.Count)
}
Вы увидите, что WorkItemNotes
, которые соответствуют исходному фильтру, были добавлены в коллекцию Notes каждого workItem
.
Это из-за того, что называется Исправление отношений.
т.е. это дает вам то, что вы хотите условно включить.
Надеюсь, это поможет
Alex