Ho cercato in giro e non ho davvero trovato una risposta chiara su quando si desidera utilizzare .Firste quando si desidera utilizzare .FirstOrDefaultcon 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);
Singlee SingleOrDefault. Odio quando le persone usano Firstquando 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.


.Firsted.FirstOrDefaultentrambi considerano i predicati come argomenti, quindivar result = List.Where(x => x == "foo").First();potrebbero essere riscritti comevar result = List.First(x => x == "foo");