这种局限性归结为这样一个事实,即最终它必须将该查询转换为 SQL, 而SQL具有
SELECT TOP(在T-SQL中)但没有
SELECTBOTTOM(没有这种东西)。
不过,有一种简单的方法,就是先 降序 然后执行a
First(),这就是您所做的。
编辑: 其他提供程序可能具有的不同实现
SELECT TOP 1,在Oracle上可能更像
WHERe ROWNUM = 1
编辑:
另一种效率较低的替代方法- 我不建议这样做! -是
.ToList()在之前调用您的数据
.Last(),它将立即执行到那时为止已建立的LINQ
To Entities expression,然后您的.Last()将起作用,因为在那一点上,.Last()
.Last()有效地执行了改为 LINQ
to Objects expression。(正如您所指出的那样,它可能会带回成千上万的记录和浪费的CPU实现对象,这些对象将永远不会被使用)
再次,我不建议您再进行此 *** 作,但这确实有助于说明LINQ表达式执行的位置和时间之间的差异。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)