ParallelEnumerable.Aggregate<TSource, TAccumulate, TResult> Method (ParallelQuery<TSource>, Func<TAccumulate>, Func<TAccumulate, TSource, TAccumulate>, Func<TAccumulate, TAccumulate, TAccumulate>, Func<TAccumulate, TResult>)
Applies in parallel an accumulator function over a sequence. This overload is not available in the sequential implementation.
Assembly: System.Core (in System.Core.dll)
public static TResult Aggregate<TSource, TAccumulate, TResult>( this ParallelQuery<TSource> source, Func<TAccumulate> seedFactory, Func<TAccumulate, TSource, TAccumulate> updateAccumulatorFunc, Func<TAccumulate, TAccumulate, TAccumulate> combineAccumulatorsFunc, Func<TAccumulate, TResult> resultSelector )
Parameters
- source
-
Type:
System.Linq.ParallelQuery<TSource>
A sequence to aggregate over.
- seedFactory
-
Type:
System.Func<TAccumulate>
A function that returns the initial accumulator value.
- updateAccumulatorFunc
-
Type:
System.Func<TAccumulate, TSource, TAccumulate>
An accumulator function to be invoked on each element in a partition.
- combineAccumulatorsFunc
-
Type:
System.Func<TAccumulate, TAccumulate, TAccumulate>
An accumulator function to be invoked on the yielded accumulator result from each partition.
- resultSelector
-
Type:
System.Func<TAccumulate, TResult>
A function to transform the final accumulator value into the result value.
Return Value
Type: TResultThe transformed final accumulator value.
Type Parameters
- TSource
The type of the elements of source.
- TAccumulate
The type of the accumulator value.
- TResult
The type of the resulting value.
| Exception | Condition |
|---|---|
| OperationCanceledException | The query was canceled with the token passed in through WithCancellation. |
| ArgumentNullException | source or seedFactory or updateAccumulatorFunc or combineAccumulatorsFunc or resultSelector is a null reference (Nothing in Visual Basic). |
| AggregateException | One or more exceptions occurred during the evaluation of the query. |
| InvalidOperationException | source contains no elements. |
This overload is specific to parallelized queries. A parallelized query may partition the data source sequence into several sub-sequences (partitions). The updateAccumulatorFunc is invoked on each element within partitions. Each partition then yields a single accumulated result. The combineAccumulatorsFunc is then invoked on the results of each partition to yield a single element. This element is then transformed by the resultSelector function.
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1