LINQ:何时使用具有筛选条件的SingleOrDefault与FirstOrDefault()
考虑IEnumerable扩展方法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 …