如何使用Linq返回前100条记录?
我有一张有4000万条记录的桌子.
此代码有效,但速度很慢,因为将在过滤之前返回所有值:
var values = (from e in dataContext.table_sample
where e.x == 1
select e)
.Take(100);
Run Code Online (Sandbox Code Playgroud)
有没有办法返回过滤?喜欢T-SQL TOP子句?
Jon*_*eet 29
不,在过滤之前不会返回所有值.该Take(100)最终会被送到了SQL的一部分-很可能使用TOP.
当然,当你指定一个orderby子句时,这样做更有意义.
LINQ在到达查询表达式的末尾时不执行查询.它只会在您调用聚合运算符(例如Count或Any)或您开始迭代结果时发送任何SQL .甚至调用Take实际上并不执行查询 - 例如,您可能希望在其之后对其进行更多过滤,这可能最终成为查询的一部分.
当你开始遍历结果(通常foreach) - 这是当SQL实际上将被发送到数据库.
(where顺便说一句,我认为你的条款有点破碎.如果你的真实代码出现问题,那么看到代码尽可能接近现实会有所帮助.)
| 归档时间: |
|
| 查看次数: |
32089 次 |
| 最近记录: |