PagingExt.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. namespace Quadarax.Foundation.Core.Data.Extensions
  4. {
  5. public static class PagingExt
  6. {
  7. public static IQueryable<TEntity> Page<TEntity>(this IQueryable<TEntity> queryable, IPaging paging, int overlap = 0)
  8. {
  9. return queryable.Page(paging.IsDisabled ? null : paging.Page, paging.IsDisabled ? null :paging.PageSize, overlap);
  10. }
  11. public static IQueryable<TEntity> Page<TEntity>(this IQueryable<TEntity> queryable, int? page, int? pageSize, int overlap = 0)
  12. {
  13. if (!(page.HasValue && pageSize.HasValue))
  14. return queryable;
  15. pageSize = pageSize.GetValueOrDefault(int.MaxValue);
  16. return queryable.Skip(page.Value * pageSize.Value).Take(pageSize.Value + overlap);
  17. }
  18. public static IEnumerable<TEntity> Page<TEntity>(this IEnumerable<TEntity> queryable, IPaging paging, int overlap = 0)
  19. {
  20. return queryable.Page(paging.IsDisabled ? null : paging.Page, paging.IsDisabled ? null :paging.PageSize, overlap);
  21. }
  22. public static IEnumerable<TEntity> Page<TEntity>(this IEnumerable<TEntity> queryable, int? page, int? pageSize, int overlap = 0)
  23. {
  24. if (!(page.HasValue && pageSize.HasValue))
  25. return queryable;
  26. pageSize = pageSize.GetValueOrDefault(int.MaxValue);
  27. return queryable.Skip(page.Value * pageSize.Value).Take(pageSize.Value + overlap);
  28. }
  29. }
  30. }