J'ai eu la déclaration suivante, qui renvoie toujours null:Pourquoi Null est-il une projection LINQ non valide?
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? (List<string>)set.addins : null
);
je l'ai changé un peu, et maintenant il fonctionne très bien:
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? set.addins : new List<string>()
);
Ma première question: Pourquoi ne peut servir comme nulle type de retour de l'opérateur ternaire dans ce contexte de LINQ?
Une question secondaire: Y a-t-il une façon plus intelligente de formuler la requête ci-dessus (en particulier si elle élimine la "nouvelle Liste()")?
Excellente réponse et insights Incidemment, le cast sur "set.addins" n'est pas nécessaire dans vos autres exemples, puisque l'opérateur ternaire n'est pas impliqué. –