У меня есть две коллекции объектов в VB.NET, которые я хочу связать вместе с помощью объединения и, возможно, сгруппировать вместе. В основном мои объекты выглядят так:
Учреждение
Посетить домашнюю страницу
- ID
- InstitutionID
- Дата
- IsFollowUp
- IsSelfScheduled
Посещение должно быть в учреждении, но посещение учреждения также может не проводиться. Я могу связать их вместе с помощью LINQ, но я не могу заставить учреждения, в которых нет посещений, также появиться в списке (что я и ищу). Я знаю, что должен использовать групповое объединение, но не могу понять, как включить существующее объединение.
From p In visitList Where p.IsFollowUp = False AndAlso p.IsSelfScheduled = False
Group p By Key = p.InstitutionID Into grp = Group
Select InstitutionID = Key, Visits = grp, LastVisitDate = grp.FirstOrDefault().ProvisionalDate
Если худшее приходит к худшему, я могу реализовать закрытый класс, чтобы делать то, что я хочу, но, похоже, это должно быть что-то простое в LINQ.
Edit:
Хорошо, используя ссылку ниже, которую разместил Тим, мне удалось придумать что-то вроде этого:
From i In institutionList
Select InstitutionID = i.ID, Name = i.Name, Inspections =
(
From p In visitList Where p.InstitutionID = i.ID Select p
)
Он использует подзапрос для извлечения соответствующей информации, но неважно, эффективен он или нет, я понятия не имею. Кажется, вытащить соответствующую информацию.