我在维护项目时遇到了以下代码 query.Take(() => 1)
.
query
类型为 IQueryable<T>
.
传递 lambda 与传递 int
有何不同? ?
编辑:编辑以澄清我不是在询问 FirstOrDefault
.
最佳答案
这里有几件事要解释。
query.Take(() => 1
( docs )这将返回一个
IQueryable<T>
其中可能包含单个项目。它将运行一个使用 SQL ServerTOP
的查询语法,这意味着它可以在 SQL Server 2008 及更早版本上运行。query.Take(1)
这与之前的版本类似,但它使用更新的 SQL Server
OFFSET
/FETCH
语法,除非您需要传统支持,否则是首选方法。query.FirstOrDefault()
这将返回您的实体的单个实例,如果没有匹配项,则返回 null。如果您想要单个项目,这通常是首选方法。不过,您需要检查代码中是否为 null。
将返回一个可枚举的,而 query.FirstOrDefault
会给你一个单一的项目,或空。它们运行起来会很不一样
关于c# - 代码 query.Take(() => 1) 做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65090739/