IQueryable简单分页的扩展方法
2023-09-14 08:57:23 时间
IQueryable简单分页的扩展方法 ,废话不多说,直接上干货!
/// <summary> /// 分页列表 /// </summary> public class Page<T> { public Page() { } public Page(List<T> items, int pageIndex, int pageSize, int totalCount) { PageIndex = pageIndex; PageSize = pageSize; Total = totalCount; PageTotal = (int)Math.Ceiling(totalCount / (double)pageSize); Items = items; } /// <summary> /// 当前页码 /// </summary> public int PageIndex { get; set; } /// <summary> /// 每页记录数 /// </summary> public int PageSize { get; set; } /// <summary> /// 总记录数 /// </summary> public int Total { get; set; } /// <summary> /// 总页数 /// </summary> public int PageTotal { get; set; } /// <summary> /// 分页数据 /// </summary> public List<T> Items { get; set; } }
public static class PagedListExtensions { /// <summary> /// PagedList /// </summary> /// <param name="query"></param> /// <param name="pageIndex">1为起始页</param> /// <param name="pageSize"></param> /// <param name="cancellationToken"></param> public static async Task<Page<T>> ToPagedListAsync<T>( this IQueryable<T> query, int pageIndex, int pageSize, CancellationToken cancellationToken = default) { if (pageIndex < 1) throw new ArgumentOutOfRangeException(nameof(pageIndex)); int realIndex = pageIndex - 1; int count = await query.CountAsync(cancellationToken).ConfigureAwait(false); var items = await query.Skip(realIndex * pageSize) .Take(pageSize) .ToListAsync(cancellationToken) .ConfigureAwait(false); return new Page<T>(items, pageIndex, pageSize, count); } public static Page<T> ToPagedList<T>( this IQueryable<T> query, int pageIndex, int pageSize) { if (pageIndex < 1) throw new ArgumentOutOfRangeException(nameof(pageIndex)); int realIndex = pageIndex - 1; int count = query.Count(); var items = query.Skip(realIndex * pageSize) .Take(pageSize) .ToList(); return new Page<T>(items, pageIndex, pageSize, count); } }
相关文章
- php 编译安装curl 扩展
- C#中泛型类和扩展方法如何使用案例分享
- 在线客服系统接入网站会员,绑定会员ID,展示会员昵称头像,传递手机号等扩展字段【唯一客服】
- Linux下部署Memcached和PHP的Memcache扩展方法
- [Medical Image Analysis | 论文简读] Factorizer: 医学图像分割的可扩展可解释上下文建模方法
- 看这篇就够了丨基于Calcite框架的SQL语法扩展探索
- PHP ImageMagick扩展有哪些函数?PHP ImageMagick扩展的使用方法
- 依赖重、扩展差,字节跳动是如何优化Apache Atlas 实时消息同步的?
- 【错误记录】Groovy 扩展方法调用报错 ( 静态扩展方法 或 实例扩展方法 需要分别配置 | 没有配置调用会报错 groovy.lang.MissingMethodException )
- ubuntu下php扩展的曲线救国计划
- 教你使用VS Code的MySQL扩展管理数据库的方法
- JavaScript学习总结(十四)——JavaScript编写类的扩展方法详解编程语言
- Oracle数据库的扩张——自动增长文件(oracle扩展数据文件)
- LINUX文件系统全面升级:扩展功能强大的文件系统优化,文件管理更高效。(linux扩展文件系统)
- 扩展String功能方法
- Javascript日期对象Date扩展方法
- PHP生成网页快照不用COM不用扩展.
- 扩展javascript的Date方法实现代码(prototype)
- windows下开发并编译PHP扩展的方法
- Linux下为PHP添加扩展库的方法
- JavaScriptArray对象扩展indexOf()方法
- PHPexif扩展方法开启详解
- 修改或扩展jQuery原生方法的代码实例