【发布时间】:2010-12-17 06:30:32
【问题描述】:
考虑 IEnumerable 扩展方法 SingleOrDefault() 和 FirstOrDefault()
MSDN documents that SingleOrDefault:
返回序列的唯一元素,如果序列为空,则返回默认值;如果序列中有多个元素,此方法将引发异常。
而FirstOrDefault from 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?
问题
在决定在 LINQ 查询中使用 SingleOrDefault() 和 FirstOrDefault() 时,您遵循或建议哪些约定?
【问题讨论】:
标签: .net linq linq-to-sql