using System.Collections.Generic; using System.Linq; namespace Quadarax.Foundation.Core.Data.Extensions { public static class PagingExt { public static IQueryable Page(this IQueryable queryable, IPaging paging, int overlap = 0) { return queryable.Page(paging.IsDisabled ? null : paging.Page, paging.IsDisabled ? null :paging.PageSize, overlap); } public static IQueryable Page(this IQueryable queryable, int? page, int? pageSize, int overlap = 0) { if (!(page.HasValue && pageSize.HasValue)) return queryable; pageSize = pageSize.GetValueOrDefault(int.MaxValue); return queryable.Skip(page.Value * pageSize.Value).Take(pageSize.Value + overlap); } public static IEnumerable Page(this IEnumerable queryable, IPaging paging, int overlap = 0) { return queryable.Page(paging.IsDisabled ? null : paging.Page, paging.IsDisabled ? null :paging.PageSize, overlap); } public static IEnumerable Page(this IEnumerable queryable, int? page, int? pageSize, int overlap = 0) { if (!(page.HasValue && pageSize.HasValue)) return queryable; pageSize = pageSize.GetValueOrDefault(int.MaxValue); return queryable.Skip(page.Value * pageSize.Value).Take(pageSize.Value + overlap); } } }