Ho cercato in giro e non ho davvero trovato una risposta chiara su quando si desidera utilizzare .First
e quando si desidera utilizzare .FirstOrDefault
con LINQ.
Quando vorresti usare
.First
? Solo quando desideri catturare l'eccezione se non vengono restituiti risultati?var result = List.Where(x => x == "foo").First();
E quando vorresti usare
.FirstOrDefault
? Quando vorresti sempre il tipo predefinito se nessun risultato?var result = List.Where(x => x == "foo").FirstOrDefault();
E del resto, che dire di Take?
var result = List.Where(x => x == "foo").Take(1);
Single
e SingleOrDefault
. Odio quando le persone usano First
quando vogliono veramente Single
; )
.FirstOrDefault()
ti dà sempre l'opportunità di generare un'eccezione più significativa. Se viene generata un'eccezione di sequenza e più di una .First()
in un metodo, può essere difficile discernere quale affermazione è il problema.
.First
ed.FirstOrDefault
entrambi considerano i predicati come argomenti, quindivar result = List.Where(x => x == "foo").First();
potrebbero essere riscritti comevar result = List.First(x => x == "foo");