Net 分页功能的实现
生活随笔
收集整理的這篇文章主要介紹了
Net 分页功能的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先寫一個接口
| 1 2 3 4 5 6 | public interface IPagedList ????{ ????????int CurrentPageIndex { get; set; } ????????int PageSize { get; set; } ????????int TotalItemCount { get; set; } ????} |
然后一個類去實現這個類
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class PagedList<T> : List<T>,IPagedList ????{ ????????public PagedList(IList<T> items, int pageIndex, int pageSize) ????????{ ????????????PageSize = pageSize; ????????????TotalItemCount = items.Count; ????????????CurrentPageIndex = pageIndex; ????????????for (int i = StartRecordIndex - 1; i < EndRecordIndex; i++) ????????????{ ????????????????Add(items[i]); ????????????} ????????} ????????public PagedList(IEnumerable<T> items, int pageIndex, int pageSize, int totalItemCount) ????????{ ????????????AddRange(items); ????????????TotalItemCount = totalItemCount; ????????????CurrentPageIndex = pageIndex; ????????????PageSize = pageSize; ????????} ????????public int ExtraCount { get; set; } ????????public int CurrentPageIndex { get; set; } ????????public int PageSize { get; set; } ????????public int TotalItemCount { get; set; } ????????public int TotalPageCount { get { return (int)Math.Ceiling(TotalItemCount / (double)PageSize); } } ????????public int StartRecordIndex { get { return (CurrentPageIndex - 1) * PageSize + 1; } } ????????public int EndRecordIndex { get { return TotalItemCount > CurrentPageIndex * PageSize ? CurrentPageIndex * PageSize : TotalItemCount; } } ????} |
那么最后,我們應該如何去調用這個 PagedList的呢?我們先寫一個拓展方法
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ????public static class PageLinqExtensions ????{ ????????public static PagedList<T> ToPagedList<T> ????????????( ????????????????this IQueryable<T> allItems, ????????????????int pageIndex, ????????????????int pageSize ????????????) ????????{ ????????????if (pageIndex < 1) ????????????????pageIndex = 1; ????????????var itemIndex = (pageIndex - 1) * pageSize; ????????????var pageOfItems = allItems.Skip(itemIndex).Take(pageSize).ToList(); ????????????var totalItemCount = allItems.Count(); ????????????return new PagedList<T>(pageOfItems, pageIndex, pageSize, totalItemCount); ????????} ????} |
?
然后調用的時候就可以這樣使用了
| 1 2 | ???? IQueryable<User> users ; ???? users.OrderByDescending(u => u.ID).ToPagedList(request.PageIndex, request.PageSize); |
?來自?Net 分頁功能的實現
轉載于:https://www.cnblogs.com/qiao-xi/p/5594661.html
總結
以上是生活随笔為你收集整理的Net 分页功能的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql bin log日志
- 下一篇: 2440按键中断编程