Linq分页-如何合并总记录计数

Linq分页-如何合并总记录计数,linq,linq-to-entities,Linq,Linq To Entities,我正在试图找出获取记录计数的最佳方法。我需要这个值来计算给定页面大小和一些其他变量的总页面数。 这就是我到目前为止使用skip和take语句获取起始行和页面大小的内容 promotionInfo = (from p in matches orderby p.PROMOTION_NM descending select p).Skip(startRow).Take(pageSize).ToList(); 我知道我可以运行另一个查询,但我想可能有另一种方法可以实现此计数,而无需运行两次查询 提前感

我正在试图找出获取记录计数的最佳方法。我需要这个值来计算给定页面大小和一些其他变量的总页面数。
这就是我到目前为止使用skip和take语句获取起始行和页面大小的内容

promotionInfo = (from p in matches
orderby p.PROMOTION_NM descending
select p).Skip(startRow).Take(pageSize).ToList();
我知道我可以运行另一个查询,但我想可能有另一种方法可以实现此计数,而无需运行两次查询

提前感谢,, 比利

我知道我可以运行另一个查询,但我想可能有另一种方法可以实现此计数,而无需运行两次查询

不,您必须运行查询

您可以执行以下操作:

var source = from p in matches
             orderby p.PROMOTION_NM descending
             select p;
var count = source.Count();
var promotionInfo = source.Skip(startRow).Take(pageSize).ToList();

不过,请注意。

这正是我写这篇文章的方式,因为我知道这是两首热门歌曲。跳过(0)不是免费的,你是说资源紧张吗?如果startRow为0,则应将其删除?Yews,然后将其删除。点击链接了解更多信息。你知道EF 4中是否退还了跳过(0)的“费用”吗?@John,它没有更改,但L2S已更改为与L2E一样工作。在我的博客上看到Damien Guard的评论。这显然是一个QA功能,因为很多人都不需要测试第1页。谢谢你的回答。我一直在研究通过SQL分析器从EF生成的内容,所以我将尝试一些通用的分页优化。