Considerare i metodi di estensione IEnumerable SingleOrDefault()eFirstOrDefault()
MSDN documenta cheSingleOrDefault :
Restituisce l'unico elemento di una sequenza o un valore predefinito se la sequenza è vuota; questo metodo genera un'eccezione se nella sequenza è presente più di un elemento.
che FirstOrDefaultda MSDN (presumibilmente quando si utilizza un OrderBy()o OrderByDescending()o nessuno),
Restituisce il primo elemento di una sequenza
Considera una manciata di query di esempio, non è sempre chiaro quando utilizzare questi due metodi:
var someCust = db.Customers
.SingleOrDefault(c=>c.ID == 5); //unlikely(?) to be more than one, but technically COULD BE
var bobbyCust = db.Customers
.FirstOrDefault(c=>c.FirstName == "Bobby"); //clearly could be one or many, so use First?
var latestCust = db.Customers
.OrderByDescending(x=> x.CreatedOn)
.FirstOrDefault();//Single or First, or does it matter?
Domanda
Quali convenzioni segui o suggerisci quando decidi di utilizzare SingleOrDefault()e FirstOrDefault()nelle tue domande LINQ?