public static class QueryableExtensions{#region 内存分页/// <summary>/// 返回对象分页列表/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="dataSource">已排序的数据源</param>/// <param name="pageIndex">页码,1开始</param>/// <param name="pageSize">页条数</param>/// <returns>对象分页列表</returns>public static IPagedList<T> ToPagedList<T>(this IList<T> dataSource, int pageIndex, int pageSize)where T : class{pageIndex = pageIndex <= 0 ? 1 : pageIndex;var pagedList = new PagedList<T>{PageIndex = pageIndex,PageSize = pageSize,TotalCount = dataSource.Count,Entities = dataSource.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList()};return pagedList;}/// <summary>/// 返回对象分页列表/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="dataSource">已排序的数据源</param>/// <param name="pager">分页器对象;当为空时,分页器取默认值</param>/// <returns>对象分页列表</returns>public static IPagedList<T> ToPagedList<T>(this IList<T> dataSource, Pager pager) where T : class{pager = pager ?? new Pager();return dataSource.ToPagedList(pager.PageIndex, pager.PageSize);}#endregion#region IQueryable分页/// <summary>/// 返回对象分页列表/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="dataSource">已排序的数据源</param>/// <param name="pageIndex">页码,1开始</param>/// <param name="pageSize">页条数</param>/// <returns>对象分页列表</returns>public static IPagedList<T> ToPagedList<T>(this IQueryable<T> dataSource, int pageIndex, int pageSize)where T : class{pageIndex = pageIndex <= 0 ? 1 : pageIndex;var pagedList = new PagedList<T>{PageIndex = pageIndex,PageSize = pageSize,TotalCount = dataSource.Count(),Entities = dataSource.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList()};return pagedList;}/// <summary>/// 返回对象分页列表/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="dataSource">已排序的数据源</param>/// <param name="pager">分页器对象;当为空时,分页器取默认值</param>/// <returns>对象分页列表</returns>public static IPagedList<T> ToPagedList<T>(this IQueryable<T> dataSource, Pager pager) where T : class{pager = pager ?? new Pager();return dataSource.ToPagedList(pager.PageIndex, pager.PageSize);}#endregion/// <summary>/// 当满足特定条件时执行查询/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="source">查询对象</param>/// <param name="condition">需要满足的条件</param>/// <param name="predicate">满足条件时执行的查询表达式</param>/// <returns>结果集</returns>public static IQueryable<T> WhereIf<T>(this IQueryable<T> source, bool condition,Expression<Func<T, bool>> predicate){return condition ? source.Where(predicate) : source;}}

 /// <summary>/// 分页器/// </summary>public class Pager{/// <summary>/// 分页索引(默认为1)/// </summary>public int PageIndex { get; set; } = 1;/// <summary>/// 分页大小(默认为10)/// </summary>public int PageSize { get; set; } = 10;}

转载于:https://www.cnblogs.com/x-poior/p/8085509.html

【WH】MVC数据分页扩展类相关推荐

  1. php分页显示类——在线拍卖行(1)

    `自己周末做了一个在线拍卖行,虽然没有很好看的界面,但是上架商品,竞价,展示商品,展示热门商品等已经都有了,自己现在把里面用到的东西一点点写出来为以后复习用.       首先就是一个php的分页显示 ...

  2. 【Flask项目2】python对象分页数据序列化基类(5)

    comment-utils-serializer.py文件 class BasePaginateSerializer(object):"""分页数据序列化基类" ...

  3. php批量新增数据类型,Yii框架批量插入数据扩展类的简单实现方法

    本文实例讲述了Yii框架批量插入数据扩展类的简单实现方法.分享给大家供大家参考,具体如下: MySQL INSERT语句允许插入多行数据,如下所示: INSERT INTO tbl_name (a,b ...

  4. mvc.net分页查询案例——PagedList

    在.net中,除了人手动写分页类之外,微软还提供了官方的分页,分页工具类包括PagedList和PagerExtension,先来看看PagedList类里面是怎么写的: PagedList usin ...

  5. 自定义MVC框架之工具类-图像处理类

    截止目前已经改造了4个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 自定义MVC框架之工具类-文件上传类 图像处理类: 1,图片加水印处理( ...

  6. drf之day05: 2个视图基类,GenericAPIView的属性和方法,基于APIView写5个接口,基于GenericAPIView写5个接口,5个视图扩展类,9个视图子类,视图集

    目录标题 一:2个视图基类 1.GenericAPIView的属性和方法 二:基于APIView写5个接口 三:基于GenericAPIView写5个接口 四:五个视图扩展类 1..基于Generic ...

  7. SQL Server下7种“数据分页”方案,全网最全,快收藏

    数据分页往往有三种常用方案. 第一种,把数据库中存放的相关数据,全部读入PHP/Java/C#代码/内存,再由代码对其进行分页操作(速度慢,简易性高). 第二种,直接在数据库中对相关数据进行分页操作, ...

  8. jango-简单的mixin扩展类

    介绍 关于mixin,mix in是一种提供基础口味的冰淇淋(如香草,巧克力),可以往上添加坚果,饼干等.mixin作为扩展类通常用于多继承问题.多继承是Python语言的特色.一般通过继承或重写来使 ...

  9. 扩展方法必须在非泛型静态类中定义_第11篇:Cython面向对象编程--扩展类的实例化...

    我们前篇谈到了Cython的访问控制,并且谈论了cdef class关键字的底层操作,顺带也谈论了Python类为什么会比Cython类慢的原因.本篇我们将介绍Cython扩展类的初始化 Cython ...

  10. 数据分页 THINKPHP3.2 分页 三种分页方法

    数据分页复制本页链接opensns 通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例.第一种:利用Page类和limit方法$U ...

最新文章

  1. 如何获取Vim中所有已安装颜色方案的列表?
  2. python的填充色怎么弄_python中如何给图形填充颜色
  3. 长微博android,Android 上最强大的长微博工具:BlackLight 长微博
  4. Android 开发之 bindService() 通信
  5. leetcode 117. 填充每个节点的下一个右侧节点指针 II(Populating Next Right Pointers in Each Node II)...
  6. 数据库设计-电话号码长度
  7. 比较全面的OA系统需求分析
  8. 远程RPC调用用于js逆向
  9. matlab 正20面体,如何画正二十面体
  10. java 句柄无效_c# – 通过java运行.net控制台时“句柄无效”
  11. 这篇文章终于把中美德三国的工业互联网讲清楚了
  12. supervisor 提示:xxx: ERROR (no such process)
  13. UUID的含义及实现原理
  14. java 做日历_java编程实现日历
  15. 什么是元组以及元组的作用
  16. SQL sever 数据库数据类型
  17. [Spring实战系列](11)SpEL使用表达式装配
  18. 破解这「七宗罪」,你才能晋升高级运营
  19. 计算机开启后显示器黑屏,开机后显示器黑屏无信号输入但电脑主机一直在运行的解决方法...
  20. 上市公司高新技术资质认定匹配数据(2000-2021年)

热门文章

  1. 关注VS.Net 2005
  2. 实现链表的增删改查java代码_用Java语言实现链表的增删改查
  3. android对象识别实验报告,20162302 实验四《Android程序设计》实验报告
  4. Spring在Web中的应用
  5. tp5 保存图片背景黑色_将照片背景换成黑色或白色,用snapseed手机修图软件,怎么操作?...
  6. 关于计算机的幻想作文600字,科学幻想作文600字
  7. 基于矩阵分解的隐因子模型
  8. Java 多线程执行
  9. form表单的get和post传值问题
  10. bzoj 1072: [SCOI2007]排列perm