我对linq有疑问。我正在使用Skip和Take进行分页:
(from l in db.ProductList
select l).Skip((page - 1) * row_per_page).Take(row_per_page)
它工作,我需要检索产品列表的总行来计算最大页面。我想我必须使用另一个查询来计算行数,但在上面的一个查询中还有另一种方法可以做到这一点吗?
答案 0 :(得分:4)
要获取行数,请使用.Count()扩展方法
var count = (from l in db.ProductList select l).Count();
答案 1 :(得分:1)
最重要的是,您必须枚举所有项目才能获得总页码。但是你只想枚举它们一次。 我建议你尝试使用GroupBy方法获取IEnumerable> “页面”。然后,您可以使用pages.Count()来获取页数。或者,您可以枚举页面以获取每个项目页面。 GroupBy查询只执行一次。
答案 2 :(得分:0)
无法同时获取行总数和同一查询中这些行的“skip / take”子集。
你有两个问题需要这个吗?