当研究使用LINQ在C#中实现分页的最佳方法时,大多数建议如下:
// Execute the query
var query = db.Entity.Where(e => e.Something == something);
// Get the total num records
var total = query.Count();
// Page the results
var paged = query.Skip((pageNum - 1) * pageSize).Take(pageSize);
这似乎是一个常见的建议策略(简化版)。
对我来说,分页的主要目的是为了提高效率。如果我的表中包含1.2百万条记录,其中Something == something,我不想同时检索所有记录。相反,我想分页数据,尽可能地获取少量记录。但是使用这种方法,似乎这是一个无意义的点。
如果我理解正确,第一条语句仍然检索了1.2百万条记录,然后根据需要进行分页。
以这种方式进行分页实际上会提高性能吗?如果每次都要检索1.2百万条记录,除了明显的UI好处外,还有什么意义吗?
我的理解有误吗?有没有任何.NET大师可以给我关于LINQ、分页和处理大型数据集时的性能方面的课程?
.Select
不会导致枚举。 - spender