private async Task <ContentSummaries> GetContentSummariesAsync(int limit, string continuationToken, QueryDefinition queryDefinition)
        {
            FeedIterator <ContentSummary> iterator = this.container.GetItemQueryIterator <ContentSummary>(queryDefinition, continuationToken, new QueryRequestOptions {
                MaxItemCount = limit
            });

            var summaries = new ContentSummaries();

            if (iterator.HasMoreResults)
            {
                FeedResponse <ContentSummary> results = await iterator.ReadNextAsync().ConfigureAwait(false);

                summaries.ContinuationToken = results.ContinuationToken;
                summaries.Summaries.AddRange(results.Resource);
            }

            return(summaries);
        }
        /// <inheritdoc/>
        public async Task <List <ContentSummary> > GetContentSummariesForStatesAsync(IList <ContentState> states)
        {
            // All of the states should have the same slug.
            if (states.Distinct(x => x.Slug).Count() != 1)
            {
                throw new ArgumentException("All of the supplied states should be for the same content slug.", nameof(states));
            }

            var queryBuilder = new StringBuilder("SELECT ");

            queryBuilder.Append(ContentSummaryProperties);
            queryBuilder.Append(" FROM c WHERE c.slug = @slug AND c.contentType = '");
            queryBuilder.Append(Content.RegisteredContentType);
            queryBuilder.Append("' AND ARRAY_CONTAINS([");
            IList <string> contentIds = states.Select(s => s.ContentId).Distinct().ToList();

            Enumerable.Range(0, contentIds.Count).ForEach(i =>
            {
                queryBuilder.Append("@id");
                queryBuilder.Append(i);
                if (i < contentIds.Count - 1)
                {
                    queryBuilder.Append(", ");
                }
            });
            queryBuilder.Append("], c.id)");

            QueryDefinition queryDefinition =
                new QueryDefinition(queryBuilder.ToString())
                .WithParameter("@slug", states[0].Slug);

            contentIds.ForEachAtIndex((s, i) => queryDefinition = queryDefinition.WithParameter($"@id{i}", s));

            ContentSummaries summaries = await this.GetContentSummariesAsync(states.Count, null, queryDefinition).ConfigureAwait(false);

            return(summaries.Summaries);
        }