首先写一个接口

1
2
3
4
5
6

public interface IPagedList
    {
        int CurrentPageIndex { get; set; }
        int PageSize { get; set; }
        int TotalItemCount { get; set; }
    }

然后一个类去实现这个类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

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

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

1
2

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

来自 Net 分页功能的实现

转载于:https://www.cnblogs.com/qiao-xi/p/5594661.html

Net 分页功能的实现相关推荐

  1. django自带的分页功能

    django自带的分页功能 django中自带的分页功能有缺陷,但是也是一种思路,所以在下做一个整理,方便以后使用,还有服务各位小伙伴. django视图部分的代码.(注释才是重点) from dja ...

  2. ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页

    关键字:DataGrid.存储过程.分页 出自: http://blog.csdn.net/yzx110/archive/2004/08/18/78525.aspx 摘要:在最进的一个项目中因为一个管 ...

  3. hibernate和struts2实现分页功能

    1.DAO层接口的设计,定义一个PersonDAO接口,里面声明了两个方法: public interface PersonDAO {public List<Person> queryBy ...

  4. 分页技巧_实现第一个分页功能(回复列表中的分页)

    分页技巧_实现第一个分页功能(回复列表中的分页) ======================================== 假设共25条数据,每页显示10条,则共3页 first  max - ...

  5. jsp自定义图文新闻列表标签结合ssh2,带分页功能

    jsp自定义图文新闻列表标签结合ssh2,带分页功能(欢迎大家讨论指点,共同进步) 1.service层 (模拟返回数据) package com.mingda.service.impl;import ...

  6. oracle接收输入参数,Oracle带输入输出参数存储过程(包括sql分页功能)

    记录一下,免得以后忘记了又要到处去找. begin /*这里不能直接执行select语句但可以直接执行update.delete.insert语句*/ end里面不能接执行select语句,声明会话级 ...

  7. 【SSH项目实战】国税协同平台-26.分页功能编写

    可以看到,我们之前的用户管理.角色管理和信息发布管理的列表下均有这些东西: 总共1条记录,当前第 1 页,共 1 页    上一页  下一页 到 这个就是美工留给我们做分页的,我们接下来就以信息发布管 ...

  8. [置顶] 分步实现具有分页功能的自定义DataList控件【附源代码】

    一.控件也是类 [效果] [操作步骤] 1.  新建网站Web 2.  添加类CustomDataList.cs(系统会提示你把类建在App_Code文件夹中),代码如下: using System; ...

  9. 使用hibernate和struts2实现分页功能

    想着每天能学个新东西,今天准备了这个hibernate+struts2实现页面的分页功能,在这里,首先要感谢 http://www.blogjava.net/rongxh7/archive/2008/ ...

  10. think php ajax分页,thinkPHP5框架实现基于ajax的分页功能示例

    本文实例讲述了thinkPHP5框架实现基于ajax的分页功能.分享给大家供大家参考,具体如下: 最近一个页面的选项卡又牵扯到ajax分页,所以研究了一下tp5的ajax分页使用方法 首先看一下tp5 ...

最新文章

  1. ACM入门之【快速幂】
  2. linux more 下一页_Linux学习笔记
  3. jdbc获取mysql表数据类型_jdbc操作数据库并自动获取字段类型
  4. java识别系统_[Java教程]Java识别操作系统
  5. 精品美剧小屏精致灰色风格苹果CMSv10主题
  6. JavaScript 通过字符串获取function
  7. 内外网映射 html缓存问题_浅谈内存映射
  8. 天正多条线段长度lisp下载_四年级数学上册基础题过关检测+12套思维题,下载给孩子测试!【有电子版】...
  9. linux下GPIO的用户层操作(sysfs)
  10. Java机器学习软件介绍
  11. 启动docker时映射到宿主机时出现 usrbindocker-current Error response from daemon driver failed
  12. IDEA中Python使用url时报错:Traceback (most recent call last)
  13. 三自由度机器人轨迹规划(两旋转+移动)
  14. zabbix_proxy代理服务器搭建教程
  15. 腾讯秀丽江山之长歌行服务器维护,37长歌行5月15日合服维护公告
  16. 从消息推送来看,华为、小米做得最好
  17. 佳能打印机手机显示未连接服务器失败,佳能打印机连不上手机
  18. system mysql服务
  19. 中国工程院院士高文ICTC演讲《国家新一代人工智能发展规划》
  20. 《Universal Language Model Fine-tuning for Text Classification》翻译

热门文章

  1. MPLS服务合同到期了,是否该续签?
  2. Mongodb的游标,索引,聚合操作与MapReduce
  3. [CareerCup] 13.10 Allocate a 2D Array 分配一个二维数组
  4. 全方面了解和学习PHP框架
  5. eclipse中查看android源码
  6. struts.preperties说明
  7. PASSWORD,ENABLE,CONSOLE,VTY及TACACS认证顺序及区别
  8. android 自定义checkBox的样式
  9. android PowerManage
  10. git安装、使用及常见报错