コード例 #1
0
        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));
        }
コード例 #2
0
 private bool IsFilterValid(MyFilterParams filterParams)
 => filterParams.MinimumNumber >= 0 &&
 filterParams.MaximumNumber >= filterParams.MinimumNumber;