コード例 #1
0
        public static IPaginal Validate(this IPaginal paginal)
        {
            if (paginal.Page < 1)
            {
                throw new ArgumentException("Page parameter must be great than 0");
            }

            if (paginal.Take < 1)
            {
                throw new ArgumentException("Take parameter must be great than 0");
            }

            return(paginal);
        }
コード例 #2
0
        private static async Task <TPager> PaginateAsync <TPager, TElement>(IQueryable <TElement> query, IPaginal paginal, TPager pager)
            where TPager : IPaginated <TElement>
        {
            pager.Pager = new Paginator(paginal.Page, paginal.Take, await query.CountAsync());
            pager.Items = await query.Paginate(paginal).ToListAsync();

            return(pager);
        }
コード例 #3
0
        private static TPager Paginate <TPager, TElement>(IQueryable <TElement> query, IPaginal paginal, TPager pager)
            where TPager : IPaginated <TElement>
        {
            pager.Pager = new Paginator(paginal.Page, paginal.Take, query.Count());
            pager.Items = query.Paginate(paginal).ToList();

            return(pager);
        }
コード例 #4
0
 public static async Task <TPager> PaginateToAsync <TPager, TElement>(this IQueryable <TElement> query, IPaginal paginal, TPager pager)
     where TPager : IPaginated <TElement>
 => await PaginateAsync(query, paginal, pager);
コード例 #5
0
 public static async Task <TPager> PaginateToAsync <TPager, TElement>(this IQueryable <TElement> query, IPaginal paginal)
     where TPager : IPaginated <TElement>, new()
 => await PaginateAsync(query, paginal, new TPager());
コード例 #6
0
 public static TPager PaginateTo <TPager, TElement>(this IQueryable <TElement> query, IPaginal paginal, TPager pager)
     where TPager : IPaginated <TElement>
 => Paginate(query, paginal, pager);
コード例 #7
0
 public static TPager PaginateTo <TPager, TElement>(this IQueryable <TElement> query, IPaginal paginal)
     where TPager : IPaginated <TElement>, new()
 => Paginate(query, paginal, new TPager());
コード例 #8
0
        public static IQueryable <T> Paginate <T>(this IQueryable <T> query, IPaginal paginal)
        {
            paginal.Validate();

            return(query.Skip(paginal.Skip()).Take(paginal.Take));
        }
コード例 #9
0
 public static int Skip(this IPaginal paginal)
 => paginal.Take * (paginal.Page - 1);