IQueryableExt.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using Masuit.Tools.Models;
  2. using Microsoft.EntityFrameworkCore;
  3. using System;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. namespace Masuit.Tools.Core.Models
  7. {
  8. public static partial class IQueryableExt
  9. {
  10. /// <summary>
  11. /// 生成分页集合
  12. /// </summary>
  13. /// <typeparam name="T"></typeparam>
  14. /// <param name="query"></param>
  15. /// <param name="page">当前页</param>
  16. /// <param name="size">页大小</param>
  17. /// <returns></returns>
  18. public static async Task<PagedList<T>> ToPagedListAsync<T>(this IOrderedQueryable<T> query, int page, int size)
  19. {
  20. var totalCount = await query.CountAsync();
  21. if (page * size > totalCount)
  22. {
  23. page = (int)Math.Ceiling(totalCount / (size * 1.0));
  24. }
  25. if (page <= 0)
  26. {
  27. page = 1;
  28. }
  29. var list = await query.Skip(size * (page - 1)).Take(size).ToListAsync();
  30. return new PagedList<T>(list, page, size, totalCount);
  31. }
  32. }
  33. }