Beispiel #1
0
 public virtual Task <TableQuerySegment <TElement> > ExecuteQuerySegmentedAsync <TElement>(TableQuery <TElement> query, TableContinuationToken token, TableRequestOptions requestOptions, OperationContext operationContext, CancellationToken cancellationToken) where TElement : ITableEntity, new()
 {
     CommonUtility.AssertNotNull("query", query);
     if (query.Provider != null)
     {
         return(query.ExecuteSegmentedAsync(token, requestOptions, operationContext, cancellationToken));
     }
     return(query.ExecuteQuerySegmentedInternalAsync(token, ServiceClient, this, requestOptions, operationContext, cancellationToken));
 }
Beispiel #2
0
        public static async IAsyncEnumerable <U> MapSegmentAsync <T, U>(this TableQuery <T> query, Func <IList <T>, U> func)
        {
            TableContinuationToken token = null;

            do
            {
                var segment = await query.ExecuteSegmentedAsync(token);

                if (segment.Results.Count > 0)
                {
                    yield return(func(segment.Results));
                }
                token = segment.ContinuationToken;
            } while (token != null);
        }
Beispiel #3
0
        public static async Task ForEachSegmentAsync <T>(this TableQuery <T> query, Action <IList <T> > action)
        {
            TableContinuationToken token = null;

            do
            {
                var segment = await query.ExecuteSegmentedAsync(token);

                if (segment.Results.Count > 0)
                {
                    action(segment.Results);
                }
                token = segment.ContinuationToken;
            } while (token != null);
        }
Beispiel #4
0
        public static async Task <U> AggregateSegmentAsync <T, U>(this TableQuery <T> query, U seed,
                                                                  Func <IEnumerable <T>, U> selector, Func <U, U, U> aggregator)
        {
            TableContinuationToken token = null;

            do
            {
                var segment = await query.ExecuteSegmentedAsync(token);

                if (segment.Results.Count > 0)
                {
                    var newList = selector(segment.Results);
                    seed = aggregator(seed, newList);
                }

                token = segment.ContinuationToken;
            } while (token != null);

            return(seed);
        }