ho avuto la seguente dichiarazione, che restituisce sempre null:Perché Null è una proiezione LINQ non valida?
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? (List<string>)set.addins : null
);
ho cambiato un po ', e ora funziona benissimo:
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? set.addins : new List<string>()
);
La mia domanda principale: perché non può servire come un nulla tipo di ritorno dall'operatore ternario in questo contesto di LINQ?
Una domanda secondaria: esiste un modo più intelligente per formulare la query precedente (in particolare se elimina la "nuova lista()")?
Risposta e approfondimenti eccellenti. Per inciso, il cast su "set.addins" non è necessario negli altri esempi, poiché l'operatore ternario non è coinvolto. –