// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! namespace Admin.NET.Core; /// /// 分页泛型集合 /// /// public class SqlSugarPagedList { /// /// 页码 /// public int Page { get; set; } /// /// 页容量 /// public int PageSize { get; set; } /// /// 总条数 /// public int Total { get; set; } /// /// 总页数 /// public int TotalPages { get; set; } /// /// 当前页集合 /// public IEnumerable Items { get; set; } /// /// 是否有上一页 /// public bool HasPrevPage { get; set; } /// /// 是否有下一页 /// public bool HasNextPage { get; set; } } /// /// 分页拓展类 /// public static class SqlSugarPagedExtensions { /// /// 分页拓展 /// /// 对象 /// 当前页码,从1开始 /// 页码容量 /// 查询结果 Select 表达式 /// public static SqlSugarPagedList ToPagedList(this ISugarQueryable query, int pageIndex, int pageSize, Expression> expression) { var total = 0; var items = query.ToPageList(pageIndex, pageSize, ref total, expression); return CreateSqlSugarPagedList(items, total, pageIndex, pageSize); } /// /// 分页拓展 /// /// 对象 /// 当前页码,从1开始 /// 页码容量 /// public static SqlSugarPagedList ToPagedList(this ISugarQueryable query, int pageIndex, int pageSize) { var total = 0; var items = query.ToPageList(pageIndex, pageSize, ref total); return CreateSqlSugarPagedList(items, total, pageIndex, pageSize); } /// /// 分页拓展 /// /// 对象 /// 当前页码,从1开始 /// 页码容量 /// 查询结果 Select 表达式 /// public static async Task> ToPagedListAsync(this ISugarQueryable query, int pageIndex, int pageSize, Expression> expression) { RefAsync total = 0; var items = await query.ToPageListAsync(pageIndex, pageSize, total, expression); return CreateSqlSugarPagedList(items, total, pageIndex, pageSize); } /// /// 分页拓展 /// /// 对象 /// 当前页码,从1开始 /// 页码容量 /// public static async Task> ToPagedListAsync(this ISugarQueryable query, int pageIndex, int pageSize) { RefAsync total = 0; var items = await query.ToPageListAsync(pageIndex, pageSize, total); return CreateSqlSugarPagedList(items, total, pageIndex, pageSize); } /// /// 脱敏分页拓展 /// /// 对象 /// 当前页码,从1开始 /// 页码容量 /// public static async Task> ToPagedListDataMaskAsync(this ISugarQueryable query, int pageIndex, int pageSize) where TEntity : class { RefAsync total = 0; var items = await query.ToPageListAsync(pageIndex, pageSize, total); items.ForEach(x => x.MaskSensitiveData()); return CreateSqlSugarPagedList(items, total, pageIndex, pageSize); } /// /// 脱敏分页拓展 /// /// 集合对象 /// 当前页码,从1开始 /// 页码容量 /// public static SqlSugarPagedList ToPagedListDataMask(this IEnumerable list, int pageIndex, int pageSize) where TEntity : class { var total = list.Count(); var items = list.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); items.ForEach(x => x.MaskSensitiveData()); return CreateSqlSugarPagedList(items, total, pageIndex, pageSize); } /// /// 分页拓展 /// /// 集合对象 /// 当前页码,从1开始 /// 页码容量 /// public static SqlSugarPagedList ToPagedList(this IEnumerable list, int pageIndex, int pageSize) { var total = list.Count(); var items = list.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return CreateSqlSugarPagedList(items, total, pageIndex, pageSize); } /// /// 创建 对象 /// /// /// 分页内容的对象集合 /// 总条数 /// 当前页码,从1开始 /// 页码容量 /// private static SqlSugarPagedList CreateSqlSugarPagedList(IEnumerable items, int total, int pageIndex, int pageSize) { var totalPages = pageSize > 0 ? (int)Math.Ceiling(total / (double)pageSize) : 0; return new SqlSugarPagedList { Page = pageIndex, PageSize = pageSize, Items = items, Total = total, TotalPages = totalPages, HasNextPage = pageIndex < totalPages, HasPrevPage = pageIndex - 1 > 0 }; } }