miałem następującą instrukcję, która zawsze zwraca NULL:Dlaczego zerowa jest nieprawidłowa projekcja LINQ?
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? (List<string>)set.addins : null
);
Zmieniłem go lekko, a teraz działa dobrze:
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? set.addins : new List<string>()
);
Moim głównym pytaniem: Dlaczego nie może służyć jako zerowy zwraca typ z operatora trójskładnikowego w tym kontekście LINQ?
Drugie pytanie: czy istnieje bardziej sprytny sposób sformułowania powyższej kwerendy (szczególnie, jeśli eliminuje "nową listę()")?
Doskonała odpowiedź i spostrzeżenia. Nawiasem mówiąc, obsada "set.addins" nie jest konieczna w innych przykładach, ponieważ operator trójczłonowy nie jest zaangażowany. –