.NET集成DeveloperSharp实现数据分页
数据分页,几乎是任何应用系统的必备功能。但当数据量较大时,分页操作的效率就会变得很低。大数据量分页时,一个操作耗时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个),不需再做额外计算处理。
其二是:此方法已自动处理过传入“页序号”为负数、或、大于总页数、等等意外情况,可安心使用。
◆◆第二种方案如下◆◆
请参考“高效分页(续)”这篇文章
.NET集成DeveloperSharp实现数据分页的更多相关文章
- SpringBoot集成Mybatis并具有分页功能PageHelper
SpringBoot集成Mybatis并具有分页功能PageHelper 环境:IDEA编译工具 第一步:生成测试的数据库表和数据 SET FOREIGN_KEY_CHECKS=0; ...
- SQL Server下7种“数据分页”方案,全网最全
数据分页往往有三种常用方案. 第一种,把数据库中存放的相关数据,全部读入PHP/Java/C#代码/内存,再由代码对其进行分页操作(速度慢,简易性高). 第二种,直接在数据库中对相关数据进行分页操作, ...
- mysq大数据分页
mysql limit大数据量分页优化方法 Mysql的优化是非常重要的.其他最常用也最需要优化的就是limit.Mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急 ...
- Sql Server 数据分页
http://www.cnblogs.com/qqlin/archive/2012/11/01/2745161.html 1.引言 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了 ...
- Oracle、MySql、SQLServer数据分页查询
看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...
- 知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页
回到目录 数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归 ...
- salesforce 零基础开发入门学习(八)数据分页简单制作
本篇介绍通过使用VF自带标签和Apex实现简单的数据翻页功能. 代码上来之前首先简单介绍一下本篇用到的主要知识: 1.ApexPages命名空间 此命名空间下的类用于VF的控制. 主要的类包括但不限于 ...
- Oracle中的数据分页
--数据分页脚本 --创建包含数据分页代码元素声明的包头结构create or replace package data_controlis type type_cursor_data is ref ...
- 数据分页处理系列之三:Neo4j图数据分页处理
首先简单介绍下Neo4j,Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,它是一个嵌入式的.基于磁盘的.具备完全的事务特性的Java持久化引擎,但是它将结构化数 ...
- 数据分页处理系列之二:HBase表数据分页处理
HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...
随机推荐
- MySQL 列操作记录
在 MySQL 中,你可以使用多种命令和语句来执行列操作,包括添加.修改.删除列等.以下是一些与列操作相关的常用 MySQL 命令和语句: 1. 添加列: 添加新列到表格中: ALTER TABLE ...
- ASP.NET MVC 通过ActionFilter获取请求的参数
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- python3 ACM模式的输入输出例子教学
Python的输入是字符串,所以要自己转类型 strip去掉左右两端的空白符,返回str slipt把字符串按空白符拆开,返回[str] map把list里面的值映射到指定类型,返回[type] EO ...
- 三星发布990 EVO SSD:同时支持PCIe 4.0和PCIe 5.0
1月8日消息,三星发布了新款产品--990 EVO SSD,这是首款同时支持了PCIe 4.0 x4及PCIe 5.0 x2通道的SSD. 据了解,990 EVO面向中端市场,为2280 M.2规格, ...
- ESET防病毒软件 v16.2.11.0 - 安全
上次编写了笔者自己的防护软件的博文:我的电脑防护安全软件 ,今天把ESET防病毒软件的套装的下载地址发出来,让广大的朋友能够免费使用到这个软件. 链接:https://pan.baidu.com/s/ ...
- setjmp/longjmp使用问题
setjmp/longjmp开启编译优化后导致出现无法正常使用
- burpsuit+adb+逍遥模拟器
安卓7之后,单纯的将burpsuit的证书导出手动安装到模拟器中已经不行了,app可以只信任指定证书和系统内置的证书,后续用户安装的证书是不生效的,只能想办法装到系统内部 需要将证书通过openssl ...
- Thinkpad笔记本指点杆(小红点)自动漂移的问题
Dell, HP, Thinkpad在高端商务机上会配备指点杆(小红点), 有很多人是指点杆的忠实用户, 因为工作时可以双手不离键盘, 非常方便. 在指点杆的使用过程中, 有时候会遇到指点杆自己漂移的 ...
- 【Unity3D】选中物体描边特效
1 前言 描边的难点在于如何检测和识别边缘,当前实现描边特效的方法主要有以下几种: 1)基于顶点膨胀的描边方法 在 SubShader 中开 2 个 Pass 渲染通道,第一个 Pass ...
- 【framework】ATMS启动流程
1 前言 ATMS 即 ActivityTaskManagerService,用于管理 Activity 及其容器(任务.堆栈.显示等).ATMS 在 Android 10 中才出现,由原来的 A ...