Envisager l'interface IEnumerable les méthodes d'extension SingleOrDefault()
et FirstOrDefault()
MSDN documents SingleOrDefault
:
Retourne le seul élément d'une séquence, ou une valeur par défaut si la séquence est vide; cette méthode lève une exception si il n'y a plus d'un élément dans la séquence.
alors qu' FirstOrDefault
à partir de MSDN (sans doute lors de l'utilisation d'un OrderBy()
ou OrderByDescending()
ou aucun),
Retourne le premier élément d'une séquence
Envisager d'une poignée de requêtes d'exemple, il n'est pas toujours clair quand à l'utilisation de ces deux méthodes:
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?
Question
Quelles conventions de vous suivre ou de suggérer au moment de décider d'utiliser SingleOrDefault()
et FirstOrDefault()
dans vos requêtes LINQ?