Windows Dev Center

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.

Namespace:  System.Linq
Assemblies:   System.Linq.Parallel (in System.Linq.Parallel.dll)
  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
)

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.

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: 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 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.

.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
Show:
© 2015 Microsoft