Ejemplo n.º 1
0
        private IQueryable <T> GetOrderByQuery(IQueryable <T> items, FuncPagination <T> pagination)
        {
            if (pagination.IsDescendingSortOrder)
            {
                return(items.OrderByDescending(pagination.SortBy));
            }

            return(items.OrderBy(pagination.SortBy));
        }
Ejemplo n.º 2
0
        protected IQueryable <T> Paginate(
            IQueryable <T> items,
            FuncPagination <T> pagination)
        {
            var ordered = GetOrderByQuery(items, pagination);

            return(ordered
                   .Skip((pagination.Page - 1) * pagination.Size)
                   .Take(pagination.Size));
        }
Ejemplo n.º 3
0
        public virtual async Task <SearchResult <T> > Get(
            FuncPagination <T> pagination,
            Func <IQueryable <T>, IQueryable <T> > modify = null)
        {
            var query = modify?.Invoke(Set) ?? Set;

            query = query.AsNoTracking();

            var results = await Paginate(query, pagination).ToListAsync();

            var count = await query.CountAsync();

            return(new SearchResult <T>
            {
                Items = results,
                Page = pagination.Page,
                Size = pagination.Size,
                TotalItems = count
            });
        }