ParallelEnumerable.Aggregate<TSource, TAccumulate, TResult> Method (ParallelQuery<TSource>, 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.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

public static TResult Aggregate<TSource, TAccumulate, TResult>(
	this ParallelQuery<TSource> source,
	TAccumulate seed,
	Func<TAccumulate, TSource, TAccumulate> updateAccumulatorFunc,
	Func<TAccumulate, TAccumulate, TAccumulate> combineAccumulatorsFunc,
	Func<TAccumulate, TResult> resultSelector
)

Type Parameters

TSource

The type of the elements of source.

TAccumulate

The type of the accumulator value.

TResult

The type of the resulting value.

Parameters

source
Type: System.Linq.ParallelQuery<TSource>

A sequence to aggregate over.

seed
Type: TAccumulate

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: TResult
The transformed final accumulator value.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ParallelQuery<TSource>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

ExceptionCondition
OperationCanceledException

The query was canceled with the token passed in through WithCancellation.

ArgumentNullException

source 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 processing a parallelized query. 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.

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2015 Microsoft