• Net分页


    首先写一个接口

     public interface IPagedList

        {

            int CurrentPageIndex { get; set; }

            int PageSize { get; set; }

            int TotalItemCount { get; set; }

        }

    然后一个类去实现这个类

     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的呢?我们先写一个拓展方法

     

        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);

            }

        }

    然后调用的时候就可以这样使用了

     

         IQueryable users ;

         users.OrderByDescending(u => u.ID).ToPagedList(request.PageIndex, request.PageSize);

    这些都是博主多年积累的,有些可能是别人的,但博主已经不记得来自哪里了,就不特殊标出了,望见谅!!!!
  • 相关阅读:
    微信小程序创建第一个项目
    微信小程序工具下载与安装
    Windows下删除顽固文件夹
    微信小程序账号注册
    C++第四十九篇 -- 将一个项目Copy到另一台电脑
    C++第四十八篇 -- 字符串分离方法
    C++第四十七篇 -- VS2017带参数启动调试程序
    MarkDown插入图片
    Http升级到Https (本地测试,无须域名和认证)
    语音识别(ASR) 阿里云
  • 原文地址:https://www.cnblogs.com/objectxhy/p/5896018.html
Copyright © 2020-2023  润新知