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 <= ? : pageIndex;
var pagedList = new PagedList<T>
{
PageIndex = pageIndex,
PageSize = pageSize,
TotalCount = dataSource.Count,
Entities = dataSource.Skip((pageIndex - ) * 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 <= ? : pageIndex;
var pagedList = new PagedList<T>
{
PageIndex = pageIndex,
PageSize = pageSize,
TotalCount = dataSource.Count(),
Entities = dataSource.Skip((pageIndex - ) * 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; } = ; /// <summary>
/// 分页大小(默认为10)
/// </summary>
public int PageSize { get; set; } = ;
}

最新文章

  1. 网页变灰的CSS代码
  2. 初试ASP.NET Web API/MVC API(附Demo)
  3. [outlook]打开以后就自动进入安全模式的解决方法。Outlook start in safe mode.
  4. codeforces 723C : Polycarp at the Radio
  5. java中基本输入输出流的解释(flush方法的使用)
  6. c#对话框
  7. Ehcache和MemCached比较分析
  8. django的Model 模型中常用的字段类型
  9. Linux 高性能服务器编程——Linux网络编程基础API
  10. java单例模式总结
  11. MVC模式和MVP模式的区别
  12. asp.net mvc简单分页实例
  13. bootstrap3在IE8下导航不显示,自动识别成手机模式
  14. kettle的下载、安装和初步使用(windows平台下)(图文详解)
  15. flutter 调用原生(获取当前设备电池电量)
  16. 多线程二:线程池(ThreadPool)
  17. Oracle Sequence Cache 参数说明
  18. Spring Enable*高级应用及原理
  19. unity, multi pass shader中的surface pass
  20. 【BZOJ5110】[CodePlus2017]Yazid 的新生舞会 线段树

热门文章

  1. [jQ]jQuery显式操作Checkbox,并用数组存储关联值的方案
  2. html中,纯数字或纯英文的一串字符超出父容器不会折行显示,如何解决?
  3. (转)C#如何加载程序运行目录外的程序集
  4. java中garadle工程没有src问题
  5. Python 如何创建2维空数组
  6. c3 新特性
  7. bootstrap datatable
  8. DRDS SQL兼容性
  9. c++三种进制格式
  10. 二次注入的学习--Buy Flag(http://10.112.68.215:10002)