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

    这些都是博主多年积累的,有些可能是别人的,但博主已经不记得来自哪里了,就不特殊标出了,望见谅!!!!
  • 相关阅读:
    小程序mpvue使用scroll-view
    mysql之join浅析
    YApi-v1.9.2部署失败(Accessing non-existent property 'count' of module exports inside circular dependency)的解决方案
    YApi 可视化部署时遇到9090端口被占用时的解决方案
    [转载]最近涉及字符串列表存储,为加快检索速度,搜集了一些哈希函数,C语言的代码保存见内
    字符串的编码检测
    mbcs、unicode,UTF-8、UTF-16等的转换
    支持多重结构的配置信息读取代码,基于VS2008
    配置信息读取代码(VS2012编译通过,使用了C++11特性)
    [转载]TCPMP0.72RC1的编译与移植以及自己另外做UI完整方法
  • 原文地址:https://www.cnblogs.com/objectxhy/p/5896018.html
Copyright © 2020-2023  润新知