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 FirstOrDefault
da 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?