首页 > 其他分享 >.NET集成DeveloperSharp实现数据分页

.NET集成DeveloperSharp实现数据分页

时间:2024-03-07 11:25:23浏览次数:23  
标签:分页 int 用途 -- DeveloperSharp NET 数据 public

数据分页,几乎是任何应用系统的必备功能。但当数据量较大时,分页操作的效率就会变得很低。大数据量分页时,一个操作耗时5秒、10秒、甚至更长时间都是有可能的,但这在用户使用的角度是不可接受的……

 

数据分页往往有三种常用方案。

第一种,把数据库中存放的相关数据,全部读入代码/内存,再由代码对其进行分页操作。

第二种,直接在数据库中对相关数据进行分页操作,再把分页后的数据输出给代码程序。

第三种,先把数据库中的相关数据全部读入“缓存”,再由代码程序对“缓存”中的数据进行读取+分页操作。

 

本文下面重点阐述第一种与第二种两个解决方案,它们也都是直接基于“数据库”的。

(第三种方案虽然速度较快,但由于需要用到“缓存”这类第三方工具,且在有数据更改时需要较复杂的“数据库-缓存”同步操作,故本文暂不详述。)

 

◆◆第一种方案如下◆◆

从NuGet引入DeveloperSharp包,然后像如下那样使用分页功能:

using DeveloperSharp.Extension;
--------------------------

var Page1 = DataAll.PagePartition(20, 5);

其中,要被分页的DataAll对象可以是List<T>、IQueryable<T>、IEnumerable<T>、等任何集合类型。

PagePartition方法的第一个参数是“页大小”,第二个参数是“页序号”,即:PagePartition<T>(int pageSize, int pageIndex)

分页后的返回值Page1的类型是:PagePiece<IEnumerable<T>>,它包含分页后的数据集、总页数、总数据、当前页码、等等一系列“分页”后经常会用到的数据。PagePiece<IEnumerable<T>>对象内包含的属性的详细说明如下:

DataList
声明:public IEnumerable<T> DataList;
用途:IEnumerable<T> --当前页的数据

PageSize
声明:public int PageSize;
用途:int --页面大小

TotalPageNumber
声明:public int TotalPageNumber;
用途:int --总页数

TotalRecordNumber
声明:public int TotalRecordNumber;
用途:int --记录总数

CurrentStartIndex
声明:public int CurrentStartIndex;
用途:int --当前页的记录起始编号

CurrentEndIndex
声明:public int CurrentEndIndex;
用途:int --当前页的记录结束编号

CurrentPageSize
声明:public int CurrentPageSize;
用途:int --当前页的记录数量

CurrentPageIndex
声明:public int CurrentPageIndex;
用途:int --当前页码

以上,即是全网最简单的“分页”方法。此方法不仅简单,还有两大额外好处。

其一是:方法返回对象中,已自动包含了“分页”后后续操作所需的全部相关数据(见上述8个),不需再做额外计算处理。

其二是:此方法已自动处理过传入“页序号”为负数、或、大于总页数、等等意外情况,可安心使用。

 

 

◆◆第二种方案如下◆◆

请参考“高效分页(续)”这篇文章

标签:分页,int,用途,--,DeveloperSharp,NET,数据,public
From: https://www.cnblogs.com/digital-college/p/18058476

相关文章

  • Autofac的Swashbuckle生成报错 Microsoft.AspNetCore.Mvc.ApiExplorer.EndpointMetada
    错误内容:AnexceptionwasthrownwhileactivatingSwashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator->Microsoft.AspNetCore.Mvc.ApiExplorer.ApiDescriptionGroupCollectionProvider->λ:Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionProvider[]->......
  • 激情碰撞,智慧融汇 .NET Conf China 2023 JiNan圆满技术!
    2024年3月3日,温暖的阳光洒在山东财经大学的校园里,这一天,我们在这里共同见证了一场科技与智慧的盛宴——“.NETConfChina2023JiNanWatchParty:走进山财大—AI驱动下的应用智能化开发”活动。在现场,我们欢来了社区的数十名成员的参与,首先进行的是签到环节。活动也在下午14:......
  • NetCore Rtsp视频流转Websocket实现Web实时查看摄像头
    .NetCoreRtsp视频流转Websocket实现Web实时查看摄像头最近工作中遇到需求需要实现这个功能,网上找了很多方案,大都是转为视频文件保存,实时查看的方案倒比较少,最终自己慢慢琢磨了很久在windows系统下实现了,里面的核心思路是:由FFmpeg.AutoGen捕捉Rtsp流视频帧,转为Bitmap,借由Websocke......
  • .NET Core WebAPI项目部署iis后Swagger 404问题解决
    .NETCoreWebAPI项目部署iis后Swagger404问题解决前言之前做了一个WebAPI的项目,我在文章中写到的是Docker方式部署,然后考虑到很多初学者用的是iis,下面讲解下iis如何部署WebAPI项目。环境准备iisASPNETCoreModuleV2重点.NETCoreRuntimeiis的配置这里就不讲了,主要讲解......
  • netcore AES同等效转java语言 加密方法
    privatestaticbyte[]Keys={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F};///<summary>///DES加密字符串///</summary>///<paramname="encryptString&qu......
  • kubernetes支持swap了,但是cgroup v2
    kubernetes支持swap了,但是cgroupv2结论:Container-OptimizedOS(从M97开始)、Ubuntu(从21.10开始,推荐22.04+)、DebianGNU/Linux(从Debian11Bullseye开始)、Fedora(从31开始)、ArchLinux(从2021年4月开始)、RHEL和类似RHEL的发行版(从9开始)支持使用swap但是要配置......
  • VS 2022支持 .NET Framework 4.5的方法
    默认VisualStudio2022不再支持安装.NETFramework4.5组件不想装vs2019,你可以尝试如下办法:1.nuget下载4.5安装包嫌官网下载慢的可以从下方下载.net4.5https://pan.xunlei.com/s/VNsIXaGlTDlArzgWx_sYmy7tA1?pwd=s339#提取码:s339.net4.5.1https://pan.xunlei.com/s/......
  • asp.net core 7+ 调用类库的控制器
    直入主题,用原版ioc的话只需要现在类库中引用包 然后就和普通控制器一样,继承ControllerBase,然后标记上特性就可以使用 如果是使用autofac作为ioc,那么就要稍微改一下builder.Host.UseServiceProviderFactory(newAutofacServiceProviderFactory());使用autofac代替......
  • netstat命令
    我们可以使用mannetstat查看该命令的使用手册。这个程序已经过时了。netstat的替换为ss。netstat-r的替换是ip路由。netstat-i的替换是ip-s链接。netstat-g的替换是ipmaddr该命令用于输出网络状态不带任何参数,其中输出包括两部分:ActiveInternetconnections(w/oservers)和......
  • K3s - 轻量级 Kubernetes
    一、k3s介绍1.1、什么是k3s中文网站:http://docs.rancher.cn/docs/k3s/quick-start/_index/k3s是经过CNCF认证的由Rancher公司开发维护的一个轻量级的Kubernetes发行版,内核机制还是和k8s一样,但是剔除了很多外部依赖以及K8s的alpha、beta特性,同时改变了部署方式和运行方......