PagingExt.cs 1.4 KB

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