public IActionResult GetPagedData([FromQuery] PagesParams paginationQuery, [FromQuery] MyFilterParams filterQuery) { if (!IsPaginationValid(paginationQuery) || !IsFilterValid(filterQuery)) { return(BadRequest("Bad pagination")); } var nextRangeStart = paginationQuery.PageNumber * paginationQuery.PageSize; var result = paginationQuery.PageNumber < Data.Count ? Data.Where(x => x.Number >= filterQuery.MinimumNumber && x.Number <= filterQuery.MaximumNumber) .Skip(nextRangeStart) .Take(paginationQuery.PageSize) .ToList() : new List <DataDto>(); //Pagination object result must include the items being returned, the initial query options and the max number of items if available return(new PaginationObjectResult(result, paginationQuery, Data.Count)); }
private bool IsFilterValid(MyFilterParams filterParams) => filterParams.MinimumNumber >= 0 && filterParams.MaximumNumber >= filterParams.MinimumNumber;