<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
支援.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac。
資料分頁,幾乎是任何應用系統的必備功能。但當資料量較大時,分頁操作的效率就會變得很低。巨量資料量分頁時,一個操作耗時5秒、10秒、甚至更長時間都是有可能的,但這在使用者使用的角度是不可接受的……
資料分頁往往有三種常用方案。
第一種,把資料庫中存放的相關資料,全部讀入程式碼/記憶體,再由程式碼對其進行分頁操作。
第二種,直接在資料庫中對相關資料進行分頁操作,再把分頁後的資料輸出給程式碼程式。
第三種,先把資料庫中的相關資料全部讀入“快取”,再由程式碼程式對“快取”中的資料進行讀取+分頁操作。
本文下面重點闡述第一種與第二種兩個解決方案,它們也都是直接基於“資料庫”的。
(第三種方案雖然速度較快,但由於需要用到“快取”這類第三方工具,且在有資料更改時需要較複雜的“資料庫-快取”同步操作,故本文暫不詳述。)
從NuGet引入DeveloperSharp包,初始化IUtility工具
using DeveloperSharp.Framework.CoreUtility; -------------------------- IUtility IU = new Utility();
IUtility內構建有3個過載的分頁PagePartition方法:
PagePartition
宣告:PagePiece PagePartition(DataTable Table, int PageSize, int PageIndex)
用途:分頁功能
引數:(1)DataTable Table -- 需要分頁的DataTable
(2)int PageSize -- 頁面大小
(3)int PageIndex -- 當前頁碼
返回:PagePiece -- 頁片實體
PagePartition
宣告:PagePiece<List<T>> PagePartition<T>(IQueryable<T> DataList, int pageSize, int pageIndex) where T : class
用途:分頁功能
引數:(1)IQueryable<T> DataList -- 需要分頁的IQueryable
(2)int PageSize -- 頁面大小
(3)int PageIndex -- 當前頁碼
返回:PagePiece -- 頁片實體
PagePartition
宣告:PagePiece<List<T>> PagePartition<T>(List<T> DataList, int pageSize, int pageIndex) where T : class
用途:分頁功能
引數:(1)List<T> DataList -- 需要分頁的List
(2)int PageSize -- 頁面大小
(3)int PageIndex -- 當前頁碼
返回:PagePiece -- 頁片實體
分頁方法的返回值PagePiece/PagePiece<T>類,包含分頁後的資料集、總頁數、總資料、當前頁碼、等等一系列“分頁”後經常會用到的資料。PagePiece/PagePiece<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 --當前頁碼
Table
宣告:public System.Data.DataTable Table;
用途:System.Data.DataTable--當前頁的資料表
(或者)
DataList
宣告:public List<T> DataList;
用途:List<T>--當前頁的資料
為了演示“第二種分頁方案”如何使用,我們首先在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)
用途:分頁功能(有主鍵)
引數:(1)string RecordSet --需要分頁的記錄集,可以是表、檢視、或者SQL語句
(2)string Id --主鍵
(3)int PageSize --頁面大小
(4)int PageIndex --當前頁碼
返回:PagePiece --頁片實體
PagePartition
宣告:public PagePiece PagePartition(string RecordSet, int PageSize, int PageIndex)
用途:分頁功能(無主鍵)
引數:(1)string RecordSet -- 需要分頁的記錄集,可以是表、檢視、或者SQL語句
(2)int PageSize --頁面大小
(3)int PageIndex --當前頁碼
返回:PagePiece --頁片實體
注意:
(1) 當你需要分頁的資料表有“主鍵”欄位時,使用“分頁功能(有主鍵)”。反之,使用“分頁功能(無主鍵)”。
(2) RecordSet是你需要分頁的“資料總集”的SQL語句。該SQL語句的形式豐富多樣,可以帶條件、排序、甚至還能是多表的聯合查詢、等。
以上就是DeveloperSharp 高效分頁使用詳解的詳細內容,更多關於DeveloperSharp 高效分頁的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45