public IActionResult WeatherForecasts([FromQuery] FlexGridQueryDto queryParams) { var items = staticRepositoryCollections.Forecasts.Values.AsQueryable(); if (!string.IsNullOrEmpty(queryParams.GroupExpression)) { var groupedItems = items.GroupBy(queryParams.GroupExpression, "it") .Select <GroupItem <WeatherForecast> >(ParsingConfig.Default, "new (it.Key as Key, it as Items)"); return(Ok(new { Items = groupedItems.ToDictionary(g => g.Key, g => g.Items), TotalCount = groupedItems.Count() })); } var sortExp = queryParams?.SortExpression; if (!string.IsNullOrEmpty(sortExp)) { if (queryParams.SortDescending) { sortExp += " descending"; } items = items.OrderBy(sortExp); } var result = items.Skip(queryParams.PageSize * queryParams.PageNumber).Take(queryParams.PageSize).ToList(); return(Ok(new { Items = result, TotalCount = staticRepositoryCollections.Forecasts.Count })); }
public IActionResult WeatherForecasts(FlexGridQueryDto queryParams, [FromBody] IEnumerable <FilterDefinition> filters) { var items = staticRepositoryCollections.Forecasts.Values.AsQueryable(); var sortExp = queryParams.SortExpression; if (!string.IsNullOrEmpty(sortExp)) { if (queryParams.SortDescending) { sortExp += " descending"; } items = items.OrderBy(sortExp); } return(Ok(new { Items = items.Skip(queryParams.PageSize * queryParams.PageNumber).Take(queryParams.PageSize).ToList(), TotalCount = staticRepositoryCollections.Forecasts.Count })); }