Enumerable::GroupBy<TSource, TKey, TElement, TResult> Method (IEnumerable<TSource>^, Func<TSource, TKey>^, Func<TSource, TElement>^, Func<TKey, IEnumerable<TElement>^, TResult>^)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. The elements of each group are projected by using a specified function.

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

generic<typename TSource, typename TKey, typename TElement, typename TResult>
static IEnumerable<TResult>^ GroupBy(
	IEnumerable<TSource>^ source,
	Func<TSource, TKey>^ keySelector,
	Func<TSource, TElement>^ elementSelector,
	Func<TKey, IEnumerable<TElement>^, TResult>^ resultSelector


Type: System.Collections.Generic::IEnumerable<TSource>^

An IEnumerable<T> whose elements to group.

Type: System::Func<TSource, TKey>^

A function to extract the key for each element.

Type: System::Func<TSource, TElement>^

A function to map each source element to an element in an IGrouping<TKey, TElement>.

Type: System::Func<TKey, IEnumerable<TElement>^, TResult>^

A function to create a result value from each group.

Return Value

Type: System.Collections.Generic::IEnumerable<TResult>^

A collection of elements of type TResult where each element represents a projection over a group and its key.

Type Parameters


The type of the elements of source.


The type of the key returned by keySelector.


The type of the elements in each IGrouping<TKey, TElement>.


The type of the result value returned by resultSelector.

In query expression syntax, a group by (Visual C#) or Group By Into (Visual Basic) clause translates to an invocation of GroupBy.

The following code example demonstrates how to use GroupBy<TSource, TKey, TElement, TResult>(IEnumerable<TSource>^, Func<TSource, TKey>^, Func<TSource, TElement>^, Func<TKey, IEnumerable<TElement>^, TResult>^) to group the projected elements of a sequence and then project a sequence of results of type TResult.

No code example is currently available or this language may not be supported.

Universal Windows Platform
Available since 8
.NET Framework
Available since 3.5
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top