using Masuit.Tools.Core; using Microsoft.EntityFrameworkCore; namespace Masuit.Tools.Models; public static partial class IQueryableExt { /// /// 生成分页集合 /// /// /// /// 当前页 /// 页大小 /// public static async Task> ToPagedListAsync(this IQueryable query, int page, int size) { var totalCount = await query.CountAsync(); if (1L * page * size > totalCount) { page = (int)Math.Ceiling(totalCount / (size * 1.0)); } if (page <= 0) { page = 1; } var list = await query.Skip(size * (page - 1)).Take(size).ToListAsync(); return new PagedList(list, page, size, totalCount); } /// /// 生成分页集合 /// /// /// /// 当前页 /// 页大小 /// public static async Task> ToPagedListNoLockAsync(this IQueryable query, int page, int size) { var totalCount = await query.CountAsync(); if (1L * page * size > totalCount) { page = (int)Math.Ceiling(totalCount / (size * 1.0)); } if (page <= 0) { page = 1; } var list = await query.Skip(size * (page - 1)).Take(size).ToListWithNoLockAsync(); return new PagedList(list, page, size, totalCount); } /// /// 生成分页集合 /// /// /// /// 当前页 /// 页大小 /// public static PagedList ToPagedList(this IQueryable query, int page, int size) { var totalCount = query.Count(); if (1L * page * size > totalCount) { page = (int)Math.Ceiling(totalCount / (size * 1.0)); } if (page <= 0) { page = 1; } var list = query.Skip(size * (page - 1)).Take(size).ToList(); return new PagedList(list, page, size, totalCount); } /// /// 生成分页集合 /// /// /// /// 当前页 /// 页大小 /// public static PagedList ToPagedListNoLock(this IQueryable query, int page, int size) { var totalCount = query.Count(); if (1L * page * size > totalCount) { page = (int)Math.Ceiling(totalCount / (size * 1.0)); } if (page <= 0) { page = 1; } var list = query.Skip(size * (page - 1)).Take(size).ToListWithNoLock(); return new PagedList(list, page, size, totalCount); } /// /// 生成分页集合 /// /// /// /// 当前页 /// 页大小 /// public static PagedList ToPagedList(this IEnumerable query, int page, int size) { var totalCount = query.Count(); if (1L * page * size > totalCount) { page = (int)Math.Ceiling(totalCount / (size * 1.0)); } if (page <= 0) { page = 1; } var list = query.Skip(size * (page - 1)).Take(size).ToList(); return new PagedList(list, page, size, totalCount); } }