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

    这些都是博主多年积累的,有些可能是别人的,但博主已经不记得来自哪里了,就不特殊标出了,望见谅!!!!
  • 相关阅读:
    bug、兼容性、适配问题
    关于daterangepicker取消默认值的设置
    重构-改善既有代码设计
    iphoneX 适配
    汇编语言(2)程序表示
    汇编语言(1)基础理论
    css 边框颜色渐变的半圆
    横向时间轴(进度条)
    pdf中内嵌字体问题
    jabRef里引用的相邻同名作者变横线
  • 原文地址:https://www.cnblogs.com/objectxhy/p/5896018.html
Copyright © 2011-2022 走看看