linq 分页 - 获取总行数

问题描述 投票:0回答:3

我有一个关于 linq 的问题。我正在使用 Skip 和 Take 进行分页:

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

它有效,我需要检索产品列表的总行数来计算最大页面。我认为我必须使用另一个查询来计算行数,但在上面的一个查询中还有另一种方法来执行此操作吗?

c# .net linq pagination
3个回答
4
投票

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

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

1
投票

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


0
投票

没有办法在同一查询中同时获取行总数和这些行的“跳过/获取”子集。

是否有理由在两个查询中需要这个?

© www.soinside.com 2019 - 2024. All rights reserved.