Почему Null является недопустимой проекцией LINQ?

У меня был следующий оператор, который всегда возвращает null:

var addins = allocations.SelectMany(
        set => set.locations.Any(q => q.IsMatch(level, count))
        ? (List<string>)set.addins : null
     );

Я немного изменил его, и теперь он работает нормально:

var addins = allocations.SelectMany(
        set => set.locations.Any(q => q.IsMatch(level, count))
        ? set.addins : new List<string>()
     );

Мой основной вопрос: почему null не может служить типом, возвращаемым тернарным оператором в этом контексте LINQ?

Второй вопрос: Есть ли более умный способ сформулировать вышеупомянутый запрос (особенно если он исключает «новый список ()»)?

6
задан Brent Arias 22 September 2010 в 02:42
поделиться