private PagedQuery <TEntity> ApplyOrderFilterAndPagination(IQueryable <TEntity> query, IEnumerable <OrderByOption <TEntity> > orderBy, Expression <Func <TEntity, bool> > condition, PageParameters parameters) { var returnObj = new PagedQuery <TEntity> { Page = parameters.Page, PageSize = parameters.PageSize }; ApplyFilter(ref query, condition); ApplyOrder(ref query, orderBy); returnObj.TotalCount = query.Count(); ApplyPagination(ref query, parameters); returnObj.Items = query.AsEnumerable(); return(returnObj); }
private void ApplyPagination(ref IQueryable <TEntity> query, PageParameters parameters) { var skip = (parameters.Page - 1) * parameters.PageSize; query = query.Skip(skip).Take(parameters.PageSize); }
private async Task <PagedQuery <TEntity> > ApplyOrderFilterAndPaginationAsync(IQueryable <TEntity> query, IEnumerable <OrderByOption <TEntity> > orderBy, Expression <Func <TEntity, bool> > condition, PageParameters parameters) { var returnObj = new PagedQuery <TEntity> { Page = parameters.Page, PageSize = parameters.PageSize }; ApplyFilter(ref query, condition); ApplyOrder(ref query, orderBy); var countTask = query.CountAsync(); ApplyPagination(ref query, parameters); var itemsTask = query.ToListAsync(); await Task.WhenAll(countTask, itemsTask); returnObj.TotalCount = await countTask; returnObj.Items = (await itemsTask).AsEnumerable(); return(returnObj); }
/// <summary> /// Returns a object with a list of objects after order, filter and pagination and with pagination data (PageSize, Page) by async way /// </summary> /// <param name="parameters">Pagination parameters </param> /// <param name="orderBy">Collection with order options, can to add one or more order rules</param> /// <returns>Collection of paginater and filtered entities</returns> public async Task <PagedQuery <TEntity> > GetAllAsync(PageParameters parameters, IEnumerable <Expression <Func <TEntity, object> > > includes = null, IEnumerable <OrderByOption <TEntity> > orderBy = null) { return(await ApplyOrderFilterAndPaginationAsync(ApplyIncludes(includes), orderBy, null, parameters)); }
/// <summary> /// Returns a object with a list of objects after order, filter and pagination and with pagination data (PageSize, Page) /// </summary> /// <param name="parameters">Pagination parameters </param> /// <param name="orderBy">Collection with order options, can to add one or more order rules</param> /// <returns>Collection of paginater and filtered entities</returns> public virtual PagedQuery <TEntity> GetAll(PageParameters parameters, IEnumerable <Expression <Func <TEntity, object> > > includes = null, IEnumerable <OrderByOption <TEntity> > orderBy = null) { return(ApplyOrderFilterAndPagination(ApplyIncludes(includes), orderBy, null, parameters)); }