private IQueryable <T> GetOrderByQuery(IQueryable <T> items, FuncPagination <T> pagination) { if (pagination.IsDescendingSortOrder) { return(items.OrderByDescending(pagination.SortBy)); } return(items.OrderBy(pagination.SortBy)); }
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)); }
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 }); }