Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
MSDN Library

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)

generic<typename TSource, typename TAccumulate, typename TResult>
static TResult Aggregate(
	ParallelQuery<TSource>^ source, 
	Func<TAccumulate>^ seedFactory, 
	Func<TAccumulate, TSource, TAccumulate>^ updateAccumulatorFunc, 
	Func<TAccumulate, TAccumulate, TAccumulate>^ combineAccumulatorsFunc, 
	Func<TAccumulate, TResult>^ resultSelector

Type Parameters


The type of the elements of source.


The type of the accumulator value.


The type of the resulting value.


Type: System.Linq::ParallelQuery<TSource>

A sequence to aggregate over.

Type: System::Func<TAccumulate>

A function that returns the initial accumulator value.

Type: System::Func<TAccumulate, TSource, TAccumulate>

An accumulator function to be invoked on each element in a partition.

Type: System::Func<TAccumulate, TAccumulate, TAccumulate>

An accumulator function to be invoked on the yielded accumulator result from each partition.

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


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


source or seedFactory or updateAccumulatorFunc or combineAccumulatorsFunc or resultSelector is a null reference (Nothing in Visual Basic).


One or more exceptions occurred during the evaluation of the query.


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

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

Portable Class Library

Supported in: Portable Class Library
© 2015 Microsoft