SqlSugarPagedList.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. namespace Admin.NET.Core;
  2. /// <summary>
  3. /// 分页泛型集合
  4. /// </summary>
  5. /// <typeparam name="TEntity"></typeparam>
  6. public class SqlSugarPagedList<TEntity>
  7. where TEntity : new()
  8. {
  9. /// <summary>
  10. /// 页码
  11. /// </summary>
  12. public int Page { get; set; }
  13. /// <summary>
  14. /// 页容量
  15. /// </summary>
  16. public int PageSize { get; set; }
  17. /// <summary>
  18. /// 总条数
  19. /// </summary>
  20. public int Total { get; set; }
  21. /// <summary>
  22. /// 总页数
  23. /// </summary>
  24. public int TotalPages { get; set; }
  25. /// <summary>
  26. /// 当前页集合
  27. /// </summary>
  28. public IEnumerable<TEntity> Items { get; set; }
  29. /// <summary>
  30. /// 是否有上一页
  31. /// </summary>
  32. public bool HasPrevPage { get; set; }
  33. /// <summary>
  34. /// 是否有下一页
  35. /// </summary>
  36. public bool HasNextPage { get; set; }
  37. }
  38. /// <summary>
  39. /// 分页拓展类
  40. /// </summary>
  41. public static class SqlSugarPagedExtensions
  42. {
  43. /// <summary>
  44. /// 分页拓展
  45. /// </summary>
  46. /// <param name="entity"></param>
  47. /// <param name="pageIndex"></param>
  48. /// <param name="pageSize"></param>
  49. /// <returns></returns>
  50. public static SqlSugarPagedList<TEntity> ToPagedList<TEntity>(this ISugarQueryable<TEntity> entity, int pageIndex, int pageSize)
  51. where TEntity : new()
  52. {
  53. var total = 0;
  54. var items = entity.ToPageList(pageIndex, pageSize, ref total);
  55. var totalPages = (int)Math.Ceiling(total / (double)pageSize);
  56. return new SqlSugarPagedList<TEntity>
  57. {
  58. Page = pageIndex,
  59. PageSize = pageSize,
  60. Items = items,
  61. Total = total,
  62. TotalPages = totalPages,
  63. HasNextPage = pageIndex < totalPages,
  64. HasPrevPage = pageIndex - 1 > 0
  65. };
  66. }
  67. /// <summary>
  68. /// 分页拓展
  69. /// </summary>
  70. /// <param name="entity"></param>
  71. /// <param name="pageIndex"></param>
  72. /// <param name="pageSize"></param>
  73. /// <returns></returns>
  74. public static async Task<SqlSugarPagedList<TEntity>> ToPagedListAsync<TEntity>(this ISugarQueryable<TEntity> entity, int pageIndex, int pageSize)
  75. where TEntity : new()
  76. {
  77. RefAsync<int> total = 0;
  78. var items = await entity.ToPageListAsync(pageIndex, pageSize, total);
  79. var totalPages = (int)Math.Ceiling(total / (double)pageSize);
  80. return new SqlSugarPagedList<TEntity>
  81. {
  82. Page = pageIndex,
  83. PageSize = pageSize,
  84. Items = items,
  85. Total = total,
  86. TotalPages = totalPages,
  87. HasNextPage = pageIndex < totalPages,
  88. HasPrevPage = pageIndex - 1 > 0
  89. };
  90. }
  91. }