Jak ułożyć zapytanie do kolekcji? Pobrać rekordy z dwóch kolekcji i połączyć je na podstawie wspólnego ID z wyjątkiem obiektów, które już nie istnieją

0

Witam serdecznie. mam obiekt controller oraz event. Pobieram listę List<controller> controllers i List<event> events. w klasie event mam pole controllerID. Jak połączyć te obie kolekcje w Dictionary<controller, event[]>?

Próbowałem tak, ale niestety jak jakiś kontroler został usunięty to wyszukiwanie da mi null, co spowoduje wyjątek podczas tworzenia słownika.

//GetEventsHistory zwraca wszystkie zdarzenia event[]
//FindControllerById zwraca kontroler o podanym Id lub null, jeżeli nie znaleziono
Dictionary<controller, event[]> dict = GetEventsHistory()
.GroupBy(x => x.ControllerID)
.ToDictionary(x => FindControllerById(x.Key), x => x.ToArray());
4

Może tak:

var dict = GetEventsHistory()
  .GroupBy(x => x.ControllerID)
  .Select(x => new { Controller = FindControllerById(x.Key), Events = x.ToArray() })
  .Where(x => x.Controller != null)
  .ToDictionary(x => x.Controller, x => x.Events);

1 użytkowników online, w tym zalogowanych: 0, gości: 1