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
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,
	TAccumulate seed,
	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: TAccumulate

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

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

Portable Class Library

Supported in: Portable Class Library
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
© 2015 Microsoft