public FilteredCollection <TEntity> GetAll(FilterPagingCriteria pageCriteria, FilterSortCriteria sortCriteria = null) { IQueryable <TEntity> collection = _context.Set <TEntity>().AppendFilterSortCriteria <TEntity, TId>(sortCriteria).AppendFilterPagingCriteria <TEntity, TId>(pageCriteria); return(new FilteredCollection <TEntity> { Collection = collection, TotalCount = Count() }); }
/// <summary> /// applying paging criteria on collection. /// To prevent applying this set pageingCriteria.PageNumber = -1 /// </summary> /// <typeparam name="TEntity"></typeparam> /// <typeparam name="TId"></typeparam> /// <param name="query"></param> /// <param name="pageingCriteria"></param> /// <returns></returns> public static IQueryable <TEntity> AppendFilterPagingCriteria <TEntity, TId>(this IQueryable <TEntity> query, FilterPagingCriteria pageingCriteria) where TEntity : IEntity <TId> { if (pageingCriteria != null) { // If paging enabled if (pageingCriteria.PageNumber >= 0) { int pageSize = pageingCriteria.PageSize > 0 ? pageingCriteria.PageSize : PageSize; // Apply paging query = query.Skip(pageingCriteria.PageNumber * pageingCriteria.PageSize).Take(pageSize); } } return(query); }