Exemple #1
0
        private static async Task <PagedResults <TEntity> > PaginateAsync <TEntity, TQuery>(this IMongoQueryable <TEntity> collection,
                                                                                            int page, int resultsPerPage, string orderbyKey, SortOrder sortOrder)
        {
            page           = page <= 0 ? 1 : page;
            resultsPerPage = resultsPerPage <= 0 ? 10 : resultsPerPage;

            var isEmpty = await collection.AnyAsync() == false;

            if (isEmpty)
            {
                return(PagedResults <TEntity> .Empty);
            }


            var totalResults = await collection.CountAsync();

            var totalPages = (int)(totalResults / resultsPerPage) + 1;

            var skip = (page - 1) * resultsPerPage;

            var data = await collection.OrderData(orderbyKey, sortOrder).Skip(skip).Take(resultsPerPage).ToListAsync();

            return(PagedResults <TEntity> .Create(data, page, resultsPerPage, totalPages, totalResults));
        }