.NET集成DeveloperSharp实现数据分页

打印 上一主题 下一主题

主题 831|帖子 831|积分 2493

数据分页,险些是任何应用系统的必备功能。但当数据量较大时,分页操作的效率就会变得很低。大数据量分页时,一个操作耗时5秒、10秒、甚至更长时间都是有可能的,但这在用户使用的角度是不可接受的……
 
数据分页往往有三种常用方案。
第一种,把数据库中存放的干系数据,全部读入代码/内存,再由代码对其进行分页操作。
第二种,直接在数据库中对干系数据进行分页操作,再把分页后的数据输出给代码程序。
第三种,先把数据库中的干系数据全部读入“缓存”,再由代码程序对“缓存”中的数据进行读取+分页操作。
 
本文下面重点阐述第一种与第二种两个解决方案,它们也都是直接基于“数据库”的。
(第三种方案固然速度较快,但由于需要用到“缓存”这类第三方工具,且在有数据更改时需要较复杂的“数据库-缓存”同步操作,故本文暂不详述。)
 
◆◆第一种方案如下◆◆
从NuGet引入DeveloperSharp包,然后像如下那样使用分页功能:
  1. using DeveloperSharp.Extension;
  2. --------------------------
  3. var Page1 = DataAll.PagePartition(20, 5);
复制代码
其中,要被分页的DataAll对象可以是List、IQueryable、IEnumerable、等任何集合类型。
PagePartition方法的第一个参数是“页大小”,第二个参数是“页序号”,即:PagePartition(int pageSize, int pageIndex)
分页后的返回值Page1的类型是:PagePiece,它包含分页后的数据集、总页数、总数据、当前页码、等等一系列“分页”后经常会用到的数据。PagePiece对象内包含的属性的具体说明如下:
  1. DataList
  2. 声明:public IEnumerable<T> DataList;
  3. 用途:IEnumerable<T> --当前页的数据
  4. PageSize
  5. 声明:public int PageSize;
  6. 用途:int --页面大小
  7. TotalPageNumber
  8. 声明:public int TotalPageNumber;
  9. 用途:int --总页数
  10. TotalRecordNumber
  11. 声明:public int TotalRecordNumber;
  12. 用途:int --记录总数
  13. CurrentStartIndex
  14. 声明:public int CurrentStartIndex;
  15. 用途:int --当前页的记录起始编号
  16. CurrentEndIndex
  17. 声明:public int CurrentEndIndex;
  18. 用途:int --当前页的记录结束编号
  19. CurrentPageSize
  20. 声明:public int CurrentPageSize;
  21. 用途:int --当前页的记录数量
  22. CurrentPageIndex
  23. 声明:public int CurrentPageIndex;
  24. 用途:int --当前页码
复制代码
以上,即是全网最简朴的“分页”方法。此方法不但简朴,还有两大额外好处。
其一是:方法返回对象中,已自动包含了“分页”后后续操作所需的全部干系数据(见上述8个),不需再做额外盘算处理。
其二是:此方法已自动处理过传入“页序号”为负数、或、大于总页数、等等不测情况,可安心使用。
 
 
◆◆第二种方案如下◆◆
请参考“高效分页(续)”这篇文章

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表