QueryableExtension.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using SqlSugar;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using TEAMModelOS.SDK.Module.SqlSugar.Configuration.Data;
  7. namespace TEAMModelOS.SDK.Module.SqlSugar.Configuration
  8. {
  9. public static class QueryableExtension
  10. {
  11. /// <summary>
  12. /// 读取列表
  13. /// </summary>
  14. /// <typeparam name="T"></typeparam>
  15. /// <param name="query"></param>
  16. /// <param name="pageIndex"></param>
  17. /// <param name="pageSize"></param>
  18. /// <param name="isOrderBy"></param>
  19. /// <returns></returns>
  20. public static async Task<Page<T>> ToPageAsync<T>(this ISugarQueryable<T> query,
  21. int pageIndex,
  22. int pageSize,
  23. bool isOrderBy = false)
  24. {
  25. var page = new Page<T>();
  26. var totalItems = await query.CountAsync();
  27. var totalPages = totalItems != 0 ? (totalItems % pageSize) == 0 ? (totalItems / pageSize) : (totalItems / pageSize) + 1 : 0;
  28. page.CurrentPage = pageIndex;
  29. page.ItemsPerPage = pageSize;
  30. page.TotalItems = totalItems;
  31. page.TotalPages = totalPages;
  32. page.Items = totalItems == 0 ? null : query.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
  33. return page;
  34. }
  35. /// <summary>
  36. /// 读取列表
  37. /// </summary>
  38. /// <typeparam name="T"></typeparam>
  39. /// <param name="query"></param>
  40. /// <param name="pageIndex"></param>
  41. /// <param name="pageSize"></param>
  42. /// <param name="isOrderBy"></param>
  43. /// <returns></returns>
  44. public static Page<T> ToPage<T>(this ISugarQueryable<T> query,
  45. int pageIndex,
  46. int pageSize,
  47. bool isOrderBy = false)
  48. {
  49. var page = new Page<T>();
  50. var totalItems = query.Count();
  51. page.Items = query.ToPageList(pageIndex, pageSize, ref totalItems);
  52. var totalPages = totalItems != 0 ? (totalItems % pageSize) == 0 ? (totalItems / pageSize) : (totalItems / pageSize) + 1 : 0;
  53. page.CurrentPage = pageIndex;
  54. page.ItemsPerPage = pageSize;
  55. page.TotalItems = totalItems;
  56. page.TotalPages = totalPages;
  57. return page;
  58. }
  59. }
  60. }