zoukankan      html  css  js  c++  java
  • 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);

    这些都是博主多年积累的,有些可能是别人的,但博主已经不记得来自哪里了,就不特殊标出了,望见谅!!!!
  • 相关阅读:
    database homework1
    数据库基础
    MySQL操作
    [BZOJ 1305][CQOI2009]dance跳舞(网络流+二分答案)
    [BZOJ 1834][ZJOI2010]network 网络扩容(费用流)
    [BZOJ 3931][CQOI2015]网络吞吐量(SPFA+网络流)
    [BZOJ 3576][Hnoi2014]江南乐(博弈论)
    [BZOJ 1086][SCOI2005]王室联邦(贪心?树分块)
    [BZOJ 4765]普通计算姬(分块+树状数组)
    [BZOJ 4802]欧拉函数(Pollard_rho+Miller_Rabin)
  • 原文地址:https://www.cnblogs.com/objectxhy/p/5896018.html
Copyright © 2011-2022 走看看