使用 Linq 处理数据分页

最近手头上一个项目需要服务端能够进行分页返回数据。

需求:

客户端传入两个分页参数:pageSize 和 pageNumber,服务端需要返回所要求的数据 (如:有20条结果数据,pageSize=5,pageNumber=2 则需要返回第6~10条数据)。

使用 Linq:

// 需要排序的话只要再使用 orderby 即可

var skipRecords = pageSize * (pageNumber - 1);
var result = data.Skip(skipRecords).Take(pageSize);

 

使用 List 的 GetRange():

int startIndex = pageSize * (pageNumber - 1);

// 此行是为了防止 OutOfRange 
int offIndex = (startIndex + pageSize) > data.Count ? (data.Count - startIndex) : pageSize;

var result = data.GetRange(startIndex, offIndex);

 

使用 Linq 的话就不需要考虑越界问题了。

 

 

posted @ 2013-07-29 10:39  kuacci  阅读(317)  评论(0编辑  收藏  举报