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

    这些都是博主多年积累的,有些可能是别人的,但博主已经不记得来自哪里了,就不特殊标出了,望见谅!!!!
  • 相关阅读:
    Python time
    Python List/Tutle/Set/Str/Dict
    python os
    Python 学习之九九乘法表
    Pycharm配置
    python 打包exe:
    Linux 安装PHP扩展过程
    tkinter在循环中创建按钮以传递命令参数,闭包的坑
    tkinter
    设置greenplum用户和密码访问:
  • 原文地址:https://www.cnblogs.com/objectxhy/p/5896018.html
Copyright © 2011-2022 走看看