我需要在一个包含将近 100 万条条目的表中进行查询,但有趣的部分只有前 500 条。
我想知道在查询行的末尾使用 Take() 方法是否是速度(和内存)优化方面的最佳选择,或者只是执行整个查询然后获取顶部元素是一回事.
最佳答案
如果您运行 Enumerable.Take,那么您正在使用 linq-to-objects - 是的,它将在客户端运行整个查询和过滤器。这将是不必要的昂贵。
这就是您不应该这样做的原因。您应该使用 Queryable.Take - 然后它将做正确的事情,并在数据库中进行分页。
如果您使用:
var page = query.Take(count)
(等)它会自动正确。
关于c# - LINQ 的 Enumerable.Take 方法在速度方面是否与 SQL 的 TOP 相当?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820828/