我有一个关于 linq 的问题。我正在使用 Skip 和 Take 进行分页:
(from l in db.ProductList
select l).Skip((page - 1) * row_per_page).Take(row_per_page)
它有效,我需要检索产品列表的总行数来计算最大页面。我认为我必须使用另一个查询来计算行数,但在上面的一个查询中还有另一种方法来执行此操作吗?
要获取行数,请使用 .Count() 扩展方法
var count = (from l in db.ProductList select l).Count();
底线是您必须枚举所有项目才能获得总页码。但您只想枚举它们一次。 我建议你尝试 GroupBy 方法来获取 IEnumerable>“pages”。然后你可以使用pages.Count()来获取页数。或者您可以枚举页面来获取每个页面的项目。 GroupBy 查询只会执行一次。
没有办法在同一查询中同时获取行总数和这些行的“跳过/获取”子集。
是否有理由在两个查询中需要这个?