SqlSugarPagedList.cs 3.1 KB

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