Розглянемо IE численні методи розширення SingleOrDefault()
таFirstOrDefault()
MSDN документи, якіSingleOrDefault
:
Повертає єдиний елемент послідовності або значення за замовчуванням, якщо послідовність порожня; цей метод кидає виняток, якщо в послідовності є більше одного елемента.
в той час як FirstOrDefault
з MSDN (імовірно при використанні OrderBy()
або OrderByDescending()
або взагалі нічого),
Повертає перший елемент послідовності
Розглянемо кілька прикладів запитів, не завжди зрозуміло, коли використовувати ці два методи:
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?
Питання
Яких умов ви дотримуєтесь чи пропонуєте, вирішуючи використовувати SingleOrDefault()
та FirstOrDefault()
у своїх LINQ-запитах?