小编典典

使用LINQ对对象进行分页

c#

您将如何在LINQ查询中实现分页?实际上暂时来说,如果可以模仿sql TOP函数,我会感到满意。但是,我可以肯定的是,无论如何稍后都需要全面的页面支持。

var queryResult = from o in objects
                  where ...
                  select new
                      {
                         A = o.a,
                         B = o.b
                      }
                   ????????? TOP 10????????

阅读 261

收藏
2020-05-19

共1个答案

小编典典

您正在寻找SkipTake扩展方法。Skip移过结果中的前N个元素,返回其余的元素;Take返回结果中的前N个元素,并删除所有剩余元素。

有关如何使用这些方法的更多信息,请参见MSDN:http : //msdn.microsoft.com/zh-
cn/library/bb386988.aspx

假设您已经考虑到pageNumber应该从0开始(按注释中的建议每1减少),您可以这样做:

int numberOfObjectsPerPage = 10;
var queryResultPage = queryResult
  .Skip(numberOfObjectsPerPage * pageNumber)
  .Take(numberOfObjectsPerPage);

否则@Alvin建议

int numberOfObjectsPerPage = 10;
var queryResultPage = queryResult
  .Skip(numberOfObjectsPerPage * (pageNumber - 1))
  .Take(numberOfObjectsPerPage);
2020-05-19