IQueryableExt.cs 1.0 KB

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