public async Task <IActionResult> HackerNewsArticles([FromQuery] int pageIndex, [FromQuery] int pageSize, string filter) { _memoryCache.TryGetValue("values", out string stringEntry); var cacheEntry = string.IsNullOrEmpty(stringEntry) ? null : JsonConvert.DeserializeObject <List <Item> >(stringEntry); var results = await _service.ReconcileArticleIdsAsync(cacheEntry ?? new List <Item>()); _memoryCache.Set("values", JsonConvert.SerializeObject(results)); var itemsAfterFilter = await _service.FilterItemsAsync(results.ToList(), filter); if (itemsAfterFilter == null) { return(NoContent()); } return(Ok(new ItemResults { Items = itemsAfterFilter .Skip(pageSize * pageIndex) .Take(pageSize), TotalCount = itemsAfterFilter?.Count() ?? 0 })); }