public async Task <IEnumerable <Category> > GetAllAsync( PaginationFilter pagination, GetAllCategoriesFilter filter = null) { var queryable = _context.Categories.AsQueryable(); queryable = AddFilterOnQuery(filter, queryable); var skip = (pagination.PageNumber - 1) * pagination.PageSize; return(await queryable .Skip(skip) .Take(pagination.PageSize) .ToListAsync()); }
private IQueryable <Category> AddFilterOnQuery( GetAllCategoriesFilter filter, IQueryable <Category> queryable ) { if (!string.IsNullOrEmpty(filter?.Name)) { queryable = queryable.Where(x => x.Name.Contains(filter.Name)); } if (filter?.CreatedBy > 0) { queryable = queryable.Where(x => x.CreatedBy == filter.CreatedBy); } return(queryable); }