我们正在实施一些 EF 数据存储库,并且我们有一些查询,其中包括TOP 1
我已经阅读了许多建议使用.Take(1)
我正在审查的代码使用的帖子.First()
我知道这两个都为对象分配产生相同的结果,但是它们实际上是否都解析为相同的查询?TOP 1
查询数据库时,这两个请求实际上是否都适用?或者他们会将查询完整地执行到可枚举中,然后简单地获取集合中的第一个条目?
此外,如果我们使用了,那么我们.FirstOrDefault()
为什么要期待任何不同的行为呢?我知道在使用 IEnumerable 时,调用.First()
空集合会抛出异常,但如果这实际上只是将查询更改为包含,那么我应该期望和....TOP 1
之间绝对没有功能差异,对吗?.First()
.FirstOrDefault()
或者,是否有比这些 Enumerable 扩展更好的方法来执行查询TOP 1
?