Кажется, это должно быть просто, но я просто не могу найти пример, который делает то, что мне нужно.
У меня есть сущности "Person" и "SavedSearch". Они правильно соединены с внешними ключами, поэтому свойства навигации работают. «Персона» может включать несколько сущностей «SavedSearch».
То, что я хочу сделать, это выбрать список всех сущностей «Person», каждая из которых содержит набор сущностей «SavedSearch», где эти сущности SavedSearch соответствуют определенному условию.
Это самое близкое, что я смог получить ...
Dim person_query = From p In db.Person
Where p.SavedSearch.Any(Function(s) s.SendEmails = True)
Select New SavedSearchDetails With {
.PersonID = p.PersonID,
.SavedSearchList = p.SavedSearch.Where(Function(s) s.SendEmails = True)
}
Это дает мне правильные результаты, но кажется неправильным указывать условие where дважды. Проверяя сгенерированный SQL, я вижу, что он использует левые внешние объединения, что, по-моему, не нужно.
По сути, мне нужен список сущностей «Person» со списком сущностей «SavedSearch», где «SendEmail» имеет значение true.
Также я должен добавить. Я хочу, чтобы сущности "Person" только включали соответствующие дочерние сущности "SavedSearch".