考虑IEnumerable扩展方法SingleOrDefault()和FirstOrDefault()
返回序列的唯一元素,如果序列为空,则返回默认值; 如果序列中有多个元素,则此方法抛出异常.
而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?
Run Code Online (Sandbox Code Playgroud)
题
你遵循或暗示什么约定决定要使用时SingleOrDefault(),并FirstOrDefault()在您的LINQ查询?