最近手头上一个项目需要服务端能够进行分页返回数据。
需求:
客户端传入两个分页参数: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 的话就不需要考虑越界问题了。