private async Task<IEnumerable<T>> Results<T>(QueryDefinition queryDefinition, QueryRequestOptions queryRequestOptions = null, int? maxItemCount = null) { List<T> results = new List<T>(); using FeedIterator feedIterator = RepositoryContainer.GetItemQueryStreamIterator(queryDefinition, requestOptions: queryRequestOptions); while (feedIterator.HasMoreResults) { foreach(T document in await CosmosDbFeedIterator.GetDocuments<T>(feedIterator)) { results.Add(document); if (results.Count == maxItemCount) { return results; } } } return results; }
private async Task<IEnumerable<T>> Results<T>(QueryDefinition queryDefinition, QueryRequestOptions queryRequestOptions, Func<List<T>, Task> batchAction, int itemsPerPage) { List<T> results = new List<T>(); using FeedIterator feedIterator = RepositoryContainer.GetItemQueryStreamIterator(queryDefinition, requestOptions: queryRequestOptions); while (feedIterator.HasMoreResults) { results.AddRange(await CosmosDbFeedIterator.GetDocuments<T>(feedIterator)); if (results.Count() >= itemsPerPage) { await batchAction(results); results.Clear(); } } if (results.Any()) { await batchAction(results); results.Clear(); } return results; }