Ho un elenco di oggetti che contengono un oggetto Persona che può avere un valore null. Quello che mi piacerebbe fare è ottenere il valore della proprietà Name del primo oggetto Person che non è null e se tutti gli oggetti Person sono nulli, restituisce una stringa vuota.LINQ - Valore di ritorno di una proprietà di un oggetto che non è nullo
mio miglior tentativo è la seguente:
string userName = MyObjectList.FirstOrDefault(x => x.Person != null).Person.Name ?? string.Empty;
Credo di capire il motivo per cui questo non funziona; se Person è nullo per ogni oggetto nel mio elenco, allora otteniamo il valore predefinito, che sarebbe nullo e genererà un errore di riferimento null quando provo ad accedere alla proprietà Person.
È possibile ottenere il risultato desiderato controllando se nessun oggetto non è nullo e quindi ottenere il primo, ma preferirei farlo in una istruzione LINQ. Qualsiasi input è apprezzato, grazie.
+1 per la pulizia, singola query LINQ –
Puoi usa anche "DefaultIfEmpty" per renderlo una soluzione puramente LINQ, se lo desideri. – Servy
@Servy Buon punto. Ho incluso una soluzione DefaultIfEmpty che dovrebbe funzionare. –