史上最强.NET数据分页方法

这篇具有很好参考价值的文章主要介绍了史上最强.NET数据分页方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【前言】

本文讲述的.NET数据分页方法为【史上最强】,已被多家大型科技公司实战采用 & 也被圈内多家知名IT培训机构转载收藏。

 

【正文】

支持.Net Core(2.0及以上)与.Net Framework(4.5及以上)

可以部署在Docker, Windows, Linux, Mac。

数据分页,几乎是任何应用系统的必备功能。但当数据量较大时,分页操作的效率就会变得很低。大数据量分页时,一个操作耗时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个),不需再做额外计算处理。

其二是:此方法已自动处理过传入“页序号”为负数、或、大于总页数、等等意外情况,稳定性极高。 

 

◆◆第二种方案如下◆◆

为了演示“第二种分页方案”如何使用,我们首先在Visual Studio中新建一个控制台工程。然后,我们做如下三个操作。

【第一步】:从NuGet引用DeveloperSharp包。

【第二步】:创建一个用来与数据库进行通信的“数据源类”(文本示例为:TestData.cs),内容如下:

using DeveloperSharp.Structure.Model;//DataSource的命名空间
using DeveloperSharp.Framework.QueryEngine;//DatabaseType的命名空间

namespace YZZ
{
    [DataSource(DatabaseType.SQLServer, "Server=localhost;Database=Test;Uid=sa;Pwd=123")]
    public class TestData : DeveloperSharp.Structure.Model.DataLayer
    {
        //类中没有任何代码
    }
}

说 明 :“数据源类”(文本示例为:TestData.cs)必 须 继 承 自 DeveloperSharp.Structure.Model.DataLayer 类 , 并 且 在 其 上 设 置DataSource属 性 的 初 始 化 值 为“数据库类型”及其“链接字符串”。

 

【第三步】:为控制台应用类,添加通过“数据源类”(TestData)调用其PagePartition方法进行数据分页的代码。注 意:核心代码就一行而已!!

代码如下:

using DeveloperSharp.Extension;//Table扩展所在的命名空间(.NET6/VS2022用户,则需要在.csproj文件中的<ItemGroup>下添加<Using>标签)
-----------------------------
    class Program
    {
        static void Main(string[] args)
        {
            TestData td = new TestData();

            //分页
            var pp = td.PagePartition("select top 5000 * from t_Order where Id>10 order by Id desc", 20, 162);

            List<Product> Products = pp.Table.ToList<Product>();
            foreach (var P in Products)
            {
                Console.WriteLine(P.Name);
            }

            Console.ReadLine();
        }
    }

Product类代码如下:

    public class Product
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public int Quantity { get; set; }
    }

此处的PagePartition方法有两个重载方法,其详细功能说明如下:

PagePartition
声明:public PagePiece PagePartition(string RecordSet, string Id, int PageSize, int PageIndex)
用途:分页功能(有主键)
参数:(1string RecordSet     --需要分页的记录集,可以是表、视图、或者SQL语句
(2string Id     --主键
(3int PageSize     --页面大小
(4int PageIndex     --当前页码
返回:PagePiece  --页片实体

PagePartition
声明:public PagePiece PagePartition(string RecordSet, int PageSize, int PageIndex)
用途:分页功能(无主键)
参数:(1string RecordSet     -- 需要分页的记录集,可以是表、视图、或者SQL语句
     (2int PageSize    --页面大小
(3int PageIndex    --当前页码
返回:PagePiece  --页片实体

注意:

(1)     当你需要分页的数据表有“主键”字段时,使用“分页功能(有主键)”。反之,使用“分页功能(无主键)”。

(2)     RecordSet是你需要分页的“数据总集”的SQL语句。该SQL语句的形式丰富多样,可以带条件、排序、甚至还能是多表的联合查询、等。

(上述的这第二种分页方案,引为经典,已被多家大型科技公司采用,还曾被知乎、CSDN推荐到相关技术主题的首页。但美中不足是:此方案现在仅仅只支持SqlServer数据库!!)

运行有问题,需要技术支持?以及bug提交通道,请添加微信:894988403

运行有问题,需要技术支持?以及bug提交通道,请添加微信:894988403

 

在技术越来越卷的今天,如果没点真水平,很难立足下去。为了答谢各位兄弟们的长期关注,特限时免费推出三套热门技术视频资源:

资源1:高薪热门【WPF上位机+工业互联网】从零手写实战

回复wpf免费领取

资源2:C#+Halcon机器视觉零基础实战教程
回复halcon免费领取

资源3:.Net7 CLR+JIT+MSIL顶级技术视频教程免费分享
回复dotnet免费领取

扫描下方二维码关注公众号(或搜索:eyuan365)。后台回复获取上述资源。文章来源地址https://www.toymoban.com/news/detail-666733.html

史上最强.NET数据分页方法
 

到了这里,关于史上最强.NET数据分页方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring 最常用的注解,史上最强整理!

    @Data : 标注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法 @AllARrgsConstructor 标注在类上 相当于全参构造 @NoARrgsConstructor 标注在类上 相当于无参构造 @Component //用于实例化对象可以用在所有的类上,一般标注在不属于三层上的时候相当于bean id=\\\"\\\" class=\\\"\\\"/ @Controll

    2024年02月01日
    浏览(51)
  • 史上最强前端视频剪辑工具来了!

    最近开发了一款网页版的视频剪辑工具,交互异常复杂,肝了很多个日日夜夜!终于可以公测了,欢迎大家使用!下面是工具的介绍以及使用说明,除了强大还是强大,基础功能目前已经完善,接下来就是加入AI功能了,编辑器基于react + typescript + webgl开发,相信未来会有越来

    2024年03月21日
    浏览(42)
  • 史上最强关机恶搞小程序,附解析

    当 system 函数的参数是 \\\"shutdown\\\" 时,它将会执行系统的关机命令。 具体来说, system(\\\"shutdown\\\") 的功能是向操作系统发送一个关机信号,请求关闭 计算机。这将触发操作系统执行一系列的关机操作,包括关闭所有正在运行的程序、保存必要的系统信息、并最终关闭计算机的电源

    2024年04月09日
    浏览(48)
  • nvitop: 史上最强GPU性能实时监测工具

    原文链接:https://mp.weixin.qq.com/s/SlOJZmF08v3-6o6rXWIHaQ Code: https://github.com/XuehaiPan/nvitop 相信大家在用NVIDIA-GPU训练网络模型的时候,都会习惯性的在终端nvidia-smi一下吧?最直接的目的是为了查看哪些卡正在使用,哪些卡处在空闲,然后挑选空闲的卡号进行网络训练。 「了解哪块卡

    2024年02月08日
    浏览(38)
  • 强力推荐!史上最强logo设计Midjourney提示词合集

    作为资深设计师, 我深知一个好的 logo 对提升品牌形象有多么重要。但是设计一个新颖又富有辨识度的 logo 往往难于登天。我相信很多设计师和我一样,为 logo 设计问题而彻夜难眠。 为了解决我们共同的痛点, 我潜心研究, 吐血整理出 22 条 Midjourney 提示词。它们涵盖多种流行

    2024年02月16日
    浏览(77)
  • Photoshop史上最强更新,动动手指就能让AI替你修图

    Photoshop 在最新的 Beta 版本中,融入了 Firely 智能 AI 创意填充功能,只要对图片进行简单地框选,就能实现生成对象、生成背景、扩展图像、移除对象以及更多创意功能,支持用自然语言输入指令,让 AI 替你完成创意填充。 早在2023年3月份的时候,Adobe 就推出了 Firely(又名萤

    2024年02月13日
    浏览(41)
  • .NET集成DeveloperSharp实现数据分页

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

    2024年03月09日
    浏览(79)
  • 二十万字带你入门C语言-史上最强C语言教程(汇总篇)

    至此,史上最强C语言教程系列已经全部完成,今天是给大家来做一个汇总,笔者目前已经完成了C语言阶段的学习,一直以来感谢大家的陪伴与支持,笔者后续还会继续更新C++、数据结构、Linux、Mysql数据库方面的教程,希望大家能够多做支持! 1.初识C语言 史上最强C语言教程

    2024年02月15日
    浏览(108)
  • 史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)

     在Windows10的使用过程中经常会遇到一些软件提示:“你的电脑上的应用需要使用以下Windows功能:.NET Framework 3.5(包括.NET 2.0和3.0)”,而点击“下载并安装此功能”后需要通过Windows更新在线下载安装的,速度是非常慢的,因此下面说一下怎么离线安装.NET Framework 3.5。  1.准备一

    2024年02月20日
    浏览(41)
  • SQL初学、精通者必看:10个学生成绩查询史上最强技巧全攻略

    本文提供了一个含有学生、成绩、课程和教师信息的完整数据库,并为读者提供了 SQL 查询练习题,还包含了练习的答案以及解析。这些题目旨在帮助有一定SQL使用经验的读者更深入地了解学生成绩相关的知识,也有助于初学者提高其SQL使用技能。这些题目涉及学生成绩排名

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包