linq分页 - 获取总行数

时间:2009-11-14 03:07:23

标签: c# .net linq paging

我对linq有疑问。我正在使用Skip和Take进行分页:

(from l in db.ProductList
          select l).Skip((page - 1) * row_per_page).Take(row_per_page)

它工作,我需要检索产品列表的总行来计算最大页面。我想我必须使用另一个查询来计算行数,但在上面的一个查询中还有另一种方法可以做到这一点吗?

3 个答案:

答案 0 :(得分:4)

要获取行数,请使用.Count()扩展方法

var count = (from l in db.ProductList select l).Count();

答案 1 :(得分:1)

最重要的是,您必须枚举所有项目才能获得总页码。但是你只想枚举它们一次。 我建议你尝试使用GroupBy方法获取IEnumerable> “页面”。然后,您可以使用pages.Count()来获取页数。或者,您可以枚举页面以获取每个项目页面。 GroupBy查询只执行一次。

答案 2 :(得分:0)

无法同时获取行总数和同一查询中这些行的“skip / take”子集。

你有两个问题需要这个吗?