Enumerable.GroupBy メソッド

定義

シーケンスの要素をグループ化します。

オーバーロード

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>, IEqualityComparer<TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。 キー値の比較には、指定された比較子を使用し、各グループの要素の射影には、指定された関数を使用します。

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。 各グループの要素は、指定された関数を使用して射影されます。

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、指定された関数を使用して各グループの要素を射影します。

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

キー セレクター関数に従ってシーケンスの要素をグループ化します。 キーの比較には、比較子を使用し、各グループの要素の射影には、指定された関数を使用します。

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。 キーの比較には、指定された比較子を使用します。

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化します。

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、指定された比較子を使用してキーを比較します。

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>, IEqualityComparer<TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。 キー値の比較には、指定された比較子を使用し、各グループの要素の射影には、指定された関数を使用します。

public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * Func<'Key, seq<'Element>, 'Result> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TResult)

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

TElement

IGrouping<TKey,TElement> の要素の型。

TResult

resultSelector によって返される結果値の型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

elementSelector
Func<TSource,TElement>

ソースの各要素を IGrouping<TKey,TElement> の要素に割り当てる関数。

resultSelector
Func<TKey,IEnumerable<TElement>,TResult>

各グループから結果値を作成する関数。

comparer
IEqualityComparer<TKey>

キーの比較対象となる IEqualityComparer<T>

戻り値

IEnumerable<TResult>

TResult 型の要素のコレクション。各要素は、グループとそのキーの射影を表します。

こちらもご覧ください

適用対象

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。 各グループの要素は、指定された関数を使用して射影されます。

public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * Func<'Key, seq<'Element>, 'Result> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult)) As IEnumerable(Of TResult)

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

TElement

IGrouping<TKey,TElement> の要素の型。

TResult

resultSelector によって返される結果値の型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

elementSelector
Func<TSource,TElement>

ソースの各要素を IGrouping<TKey,TElement> の要素に割り当てる関数。

resultSelector
Func<TKey,IEnumerable<TElement>,TResult>

各グループから結果値を作成する関数。

戻り値

IEnumerable<TResult>

TResult 型の要素のコレクション。各要素は、グループとそのキーの射影を表します。

次のコード例は、を使用して GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) シーケンスの射影された要素をグループ化し、型の結果のシーケンスを射影する方法を示して TResult います。

class Pet
{
    public string Name { get; set; }
    public double Age { get; set; }
}

public static void GroupByEx4()
{
    // Create a list of pets.
    List<Pet> petsList =
        new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                       new Pet { Name="Boots", Age=4.9 },
                       new Pet { Name="Whiskers", Age=1.5 },
                       new Pet { Name="Daisy", Age=4.3 } };

    // Group Pet.Age values by the Math.Floor of the age.
    // Then project an anonymous type from each group
    // that consists of the key, the count of the group's
    // elements, and the minimum and maximum age in the group.
    var query = petsList.GroupBy(
        pet => Math.Floor(pet.Age),
        pet => pet.Age,
        (baseAge, ages) => new
        {
            Key = baseAge,
            Count = ages.Count(),
            Min = ages.Min(),
            Max = ages.Max()
        });

    // Iterate over each anonymous type.
    foreach (var result in query)
    {
        Console.WriteLine("\nAge group: " + result.Key);
        Console.WriteLine("Number of pets in this age group: " + result.Count);
        Console.WriteLine("Minimum age: " + result.Min);
        Console.WriteLine("Maximum age: " + result.Max);
    }

    /*  This code produces the following output:

        Age group: 8
        Number of pets in this age group: 1
        Minimum age: 8.3
        Maximum age: 8.3

        Age group: 4
        Number of pets in this age group: 2
        Minimum age: 4.3
        Maximum age: 4.9

        Age group: 1
        Number of pets in this age group: 1
        Minimum age: 1.5
        Maximum age: 1.5
    */
}
Structure Pet
    Public Name As String
    Public Age As Double
End Structure

Public Sub GroupByEx4()
    ' Create a list of pets.
    Dim petsList As New List(Of Pet)(New Pet() _
                         {New Pet With {.Name = "Barley", .Age = 8.3},
                          New Pet With {.Name = "Boots", .Age = 4.9},
                          New Pet With {.Name = "Whiskers", .Age = 1.5},
                          New Pet With {.Name = "Daisy", .Age = 4.3}})

    ' Group Pet.Age values by the Math.Floor of the age.
    ' Then project an anonymous type from each group
    ' that consists of the key, the count of the group's
    ' elements, and the minimum and maximum age in the group.
    Dim query = petsList.GroupBy(
Function(pet) Math.Floor(pet.Age),
Function(pet) pet.Age,
Function(baseAge, ages) New With
    {.Key = baseAge,
    .Count = ages.Count(),
    .Min = ages.Min(),
    .Max = ages.Max()}
)

    Dim output As New System.Text.StringBuilder
    ' Iterate over each anonymous type.
    For Each result In query
        output.AppendLine(vbCrLf & "Age group: " & result.Key)
        output.AppendLine("Number of pets in this age group: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    Console.WriteLine(output.ToString)
End Sub

' This code produces the following output:

' Age group: 8
' Number of pets in this age group: 1
' Minimum age: 8.3
' Maximum age: 8.3
'
' Age group: 4
' Number of pets in this age group: 2
' Minimum age: 4.3
' Maximum age: 4.9
'
' Age group: 1
' Number of pets in this age group: 1
' Minimum age: 1.5
' Maximum age: 1.5

注釈

クエリ式の構文で、 group by (Visual C#) またはGroup By Intoの呼び出しに変換します (Visual Basic) 句GroupByします。

こちらもご覧ください

適用対象

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、指定された関数を使用して各グループの要素を射影します。

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> -> seq<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement)) As IEnumerable(Of IGrouping(Of TKey, TElement))

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

TElement

IGrouping<TKey,TElement> 内の要素の型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

elementSelector
Func<TSource,TElement>

ソースの各要素を IGrouping<TKey,TElement> の要素に割り当てる関数。

戻り値

IEnumerable<IGrouping<TKey,TElement>>

C# では IEnumerable<IGrouping<TKey, TElement>>、Visual Basic では IEnumerable(Of IGrouping(Of TKey, TElement))。各 IGrouping<TKey,TElement> オブジェクトには、TElement 型のオブジェクトのコレクションとキーが含まれます。

例外

sourcekeySelector、または elementSelector は、null です。

次のコード例は、を使用し GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) てシーケンスの要素をグループ化する方法を示しています。

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

// Uses method-based query syntax.
public static void GroupByEx1()
{
    // Create a list of pets.
    List<Pet> pets =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 },
                       new Pet { Name="Daisy", Age=4 } };

    // Group the pets using Age as the key value
    // and selecting only the pet's Name for each value.
    IEnumerable<IGrouping<int, string>> query =
        pets.GroupBy(pet => pet.Age, pet => pet.Name);

    // Iterate over each IGrouping in the collection.
    foreach (IGrouping<int, string> petGroup in query)
    {
        // Print the key value of the IGrouping.
        Console.WriteLine(petGroup.Key);
        // Iterate over each value in the
        // IGrouping and print the value.
        foreach (string name in petGroup)
            Console.WriteLine("  {0}", name);
    }
}

/*
 This code produces the following output:

 8
   Barley
 4
   Boots
   Daisy
 1
   Whiskers
*/
Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Sub GroupByEx1()
    'Create a list of Pet objects.
    Dim pets As New List(Of Pet)(New Pet() _
                         {New Pet With {.Name = "Barley", .Age = 8},
                          New Pet With {.Name = "Boots", .Age = 4},
                          New Pet With {.Name = "Whiskers", .Age = 1},
                          New Pet With {.Name = "Daisy", .Age = 4}})

    ' Group the pets using Age as the key 
    ' and selecting only the pet's Name for each value.
    Dim query As IEnumerable(Of IGrouping(Of Integer, String)) =
pets.GroupBy(Function(pet) pet.Age,
             Function(pet) pet.Name)

    Dim output As New System.Text.StringBuilder
    ' Iterate over each IGrouping in the collection.
    For Each petGroup As IGrouping(Of Integer, String) In query
        ' Print the key value of the IGrouping.
        output.AppendLine(petGroup.Key)
        ' Iterate over each value in the IGrouping and print the value.
        For Each name As String In petGroup
            output.AppendLine("  " & name)
        Next
    Next

    ' Display the output.
    Console.WriteLine(output.ToString)
End Sub

' This code produces the following output:
'
' 8
'   Barley
' 4
'   Boots
'   Daisy
' 1
'   Whiskers

クエリ式の構文で、 group by (Visual C#) またはGroup By Intoの呼び出しに変換します (Visual Basic) 句GroupByします。 次の例のクエリ式の変換は、上記の例のクエリに相当します。

IEnumerable<IGrouping<int, string>> query =
    from pet in pets
    group pet.Name by pet.Age;
    Dim query =
From pet In pets
Group pet.Name By Age = pet.Age Into ageGroup = Group

注意

Visual C# または Visual Basic のクエリ式で、要素とキーの選択式は、逆の順序でへの呼び出しの引数の位置から、GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)メソッド。

注釈

このメソッドは、遅延実行を使用して実装されます。 イミディエイトの戻り値は、アクションを実行するために必要なすべての情報を格納するオブジェクトです。 か、呼び出すことによって、オブジェクトが列挙されるまで、このメソッドによって表されるクエリは実行されません、GetEnumeratorメソッドを使用して直接またはforeachVisual C# またはFor EachVisual Basic で。

メソッドは、 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) IGrouping<TKey,TElement> 検出された個別のキーごとに1つずつ、オブジェクトのコレクションを返します。 IGrouping<TKey,TElement>は、その IEnumerable<T> 要素に関連付けられたキーも持つです。

オブジェクトは、 IGrouping<TKey,TElement> source それぞれの最初のキーを生成した内の要素の順序に基づいて順序付けされ IGrouping<TKey,TElement> ます。 グループ内の要素は、それを生成した要素が出現する順序で表示され source ます。

既定の等値比較子 Default は、キーの比較に使用されます。

こちらもご覧ください

適用対象

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

キー セレクター関数に従ってシーケンスの要素をグループ化します。 キーの比較には、比較子を使用し、各グループの要素の射影には、指定された関数を使用します。

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of IGrouping(Of TKey, TElement))

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

TElement

IGrouping<TKey,TElement> 内の要素の型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

elementSelector
Func<TSource,TElement>

ソースの各要素を IGrouping<TKey,TElement> の要素に割り当てる関数。

comparer
IEqualityComparer<TKey>

キーを比較する IEqualityComparer<T>

戻り値

IEnumerable<IGrouping<TKey,TElement>>

C# では IEnumerable<IGrouping<TKey, TElement>>、Visual Basic では IEnumerable(Of IGrouping(Of TKey, TElement))。各 IGrouping<TKey,TElement> オブジェクトには、TElement 型のオブジェクトのコレクションとキーが含まれます。

例外

sourcekeySelector、または elementSelector は、null です。

注釈

このメソッドは、遅延実行を使用して実装されます。 イミディエイトの戻り値は、アクションを実行するために必要なすべての情報を格納するオブジェクトです。 か、呼び出すことによって、オブジェクトが列挙されるまで、このメソッドによって表されるクエリは実行されません、GetEnumeratorメソッドを使用して直接またはforeachVisual C# またはFor EachVisual Basic で。

メソッドは、 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) IGrouping<TKey,TElement> 検出された個別のキーごとに1つずつ、オブジェクトのコレクションを返します。 IGrouping<TKey,TElement>は、その IEnumerable<T> 要素に関連付けられたキーも持つです。

オブジェクトは、 IGrouping<TKey,TElement> source それぞれの最初のキーを生成した内の要素の順序に基づいて順序付けされ IGrouping<TKey,TElement> ます。 グループ内の要素は、それを生成した要素が出現する順序で表示され source ます。

がの場合 comparer null 、キーの比較には既定の等値比較子 Default が使用されます。

に従って2つのキーが等しいと見なされた場合 comparer 、そのグループのキーとして最初のキーが選択されます。

クエリ式の構文で、 group by (Visual C#) またはGroup By Intoの呼び出しに変換します (Visual Basic) 句GroupByします。 詳細と使用例については、「 group 句group by 句」を参照してください。

こちらもご覧ください

適用対象

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。 キーの比較には、指定された比較子を使用します。

public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Key, seq<'Source>, 'Result> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TResult)

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

TResult

resultSelector によって返される結果値の型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

resultSelector
Func<TKey,IEnumerable<TSource>,TResult>

各グループから結果値を作成する関数。

comparer
IEqualityComparer<TKey>

キーの比較対象となる IEqualityComparer<T>

戻り値

IEnumerable<TResult>

TResult 型の要素のコレクション。各要素は、グループとそのキーの射影を表します。

こちらもご覧ください

適用対象

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、各グループとそのキーから結果値を作成します。

public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Key, seq<'Source>, 'Result> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult)) As IEnumerable(Of TResult)

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

TResult

resultSelector によって返される結果値の型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

resultSelector
Func<TKey,IEnumerable<TSource>,TResult>

各グループから結果値を作成する関数。

戻り値

IEnumerable<TResult>

TResult 型の要素のコレクション。各要素は、グループとそのキーの射影を表します。

次のコード例は、を使用して、 GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) シーケンスの要素をグループ化し、型の結果のシーケンスを射影する方法を示して TResult います。

class Pet
{
    public string Name { get; set; }
    public double Age { get; set; }
}

public static void GroupByEx3()
{
    // Create a list of pets.
    List<Pet> petsList =
        new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                       new Pet { Name="Boots", Age=4.9 },
                       new Pet { Name="Whiskers", Age=1.5 },
                       new Pet { Name="Daisy", Age=4.3 } };

    // Group Pet objects by the Math.Floor of their age.
    // Then project an anonymous type from each group
    // that consists of the key, the count of the group's
    // elements, and the minimum and maximum age in the group.
    var query = petsList.GroupBy(
        pet => Math.Floor(pet.Age),
        (age, pets) => new
        {
            Key = age,
            Count = pets.Count(),
            Min = pets.Min(pet => pet.Age),
            Max = pets.Max(pet => pet.Age)
        });

    // Iterate over each anonymous type.
    foreach (var result in query)
    {
        Console.WriteLine("\nAge group: " + result.Key);
        Console.WriteLine("Number of pets in this age group: " + result.Count);
        Console.WriteLine("Minimum age: " + result.Min);
        Console.WriteLine("Maximum age: " + result.Max);
    }

    /*  This code produces the following output:

        Age group: 8
        Number of pets in this age group: 1
        Minimum age: 8.3
        Maximum age: 8.3

        Age group: 4
        Number of pets in this age group: 2
        Minimum age: 4.3
        Maximum age: 4.9

        Age group: 1
        Number of pets in this age group: 1
        Minimum age: 1.5
        Maximum age: 1.5
    */
}
Structure Pet
    Public Name As String
    Public Age As Double
End Structure

Public Sub GroupByEx3()
    ' Create a list of pets.
    Dim petsList As New List(Of Pet)(New Pet() _
                         {New Pet With {.Name = "Barley", .Age = 8.3},
                          New Pet With {.Name = "Boots", .Age = 4.9},
                          New Pet With {.Name = "Whiskers", .Age = 1.5},
                          New Pet With {.Name = "Daisy", .Age = 4.3}})

    ' Group Pet objects by the Math.Floor of their age.
    ' Then project an anonymous type from each group
    ' that consists of the key, the count of the group's
    ' elements, and the minimum and maximum age in the group.
    Dim query = petsList.GroupBy(
Function(pet) Math.Floor(pet.Age),
Function(age, pets) New With
    {.Key = age,
    .Count = pets.Count(),
    .Min = pets.Min(Function(pet) pet.Age),
    .Max = pets.Max(Function(Pet) Pet.Age)}
)

    Dim output As New System.Text.StringBuilder
    ' Iterate over each anonymous type.
    For Each result In query
        output.AppendLine(vbCrLf & "Age group: " & result.Key)
        output.AppendLine("Number of pets in this age group: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    Console.WriteLine(output.ToString)
End Sub

' This code produces the following output:

' Age group: 8
' Number of pets in this age group: 1
' Minimum age: 8.3
' Maximum age: 8.3
'
' Age group: 4
' Number of pets in this age group: 2
' Minimum age: 4.3
' Maximum age: 4.9
'
' Age group: 1
' Number of pets in this age group: 1
' Minimum age: 1.5
' Maximum age: 1.5

注釈

クエリ式の構文で、 group by (Visual C#) またはGroup By Intoの呼び出しに変換します (Visual Basic) 句GroupByします。

こちらもご覧ください

適用対象

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化します。

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> -> seq<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IEnumerable(Of IGrouping(Of TKey, TSource))

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

戻り値

IEnumerable<IGrouping<TKey,TSource>>

C# では IEnumerable<IGrouping<TKey, TSource>>、Visual Basic では IEnumerable(Of IGrouping(Of TKey, TSource))。各 IGrouping<TKey,TElement> オブジェクトには、オブジェクトのシーケンスとキーが含まれます。

例外

source または keySelectornull です。

注釈

このメソッドは、遅延実行を使用して実装されます。 イミディエイトの戻り値は、アクションを実行するために必要なすべての情報を格納するオブジェクトです。 か、呼び出すことによって、オブジェクトが列挙されるまで、このメソッドによって表されるクエリは実行されません、GetEnumeratorメソッドを使用して直接またはforeachVisual C# またはFor EachVisual Basic で。

メソッドは、 GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) IGrouping<TKey,TElement> 検出された個別のキーごとに1つずつ、オブジェクトのコレクションを返します。 IGrouping<TKey,TElement>は、その IEnumerable<T> 要素に関連付けられたキーも持つです。

オブジェクトは、 IGrouping<TKey,TElement> source それぞれの最初のキーを生成した内の要素の順序に基づいて順序付けされ IGrouping<TKey,TElement> ます。 グループ内の要素は、に表示される順序で表示され source ます。

既定の等値比較子 Default は、キーの比較に使用されます。

クエリ式の構文で、 group by (Visual C#) またはGroup By Intoの呼び出しに変換します (Visual Basic) 句GroupByします。 詳細と使用例については、「 group 句group by 句」を参照してください。

こちらもご覧ください

適用対象

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

指定されたキー セレクター関数に従ってシーケンスの要素をグループ化し、指定された比較子を使用してキーを比較します。

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of IGrouping(Of TKey, TSource))

型パラメーター

TSource

source の要素の型。

TKey

keySelector によって返されるキーの型。

パラメーター

source
IEnumerable<TSource>

グループ化する要素を含む IEnumerable<T>

keySelector
Func<TSource,TKey>

各要素のキーを抽出する関数。

comparer
IEqualityComparer<TKey>

キーを比較する IEqualityComparer<T>

戻り値

IEnumerable<IGrouping<TKey,TSource>>

C# では IEnumerable<IGrouping<TKey, TSource>>、Visual Basic では IEnumerable(Of IGrouping(Of TKey, TSource))。各 IGrouping<TKey,TElement> オブジェクトには、オブジェクトのコレクションとキーが含まれます。

例外

source または keySelectornull です。

注釈

このメソッドは、遅延実行を使用して実装されます。 イミディエイトの戻り値は、アクションを実行するために必要なすべての情報を格納するオブジェクトです。 か、呼び出すことによって、オブジェクトが列挙されるまで、このメソッドによって表されるクエリは実行されません、GetEnumeratorメソッドを使用して直接またはforeachVisual C# またはFor EachVisual Basic で。

メソッドは、 GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) IGrouping<TKey,TElement> 検出された個別のキーごとに1つずつ、オブジェクトのコレクションを返します。 IGrouping<TKey,TElement>は、その IEnumerable<T> 要素に関連付けられたキーも持つです。

オブジェクトは、 IGrouping<TKey,TElement> source それぞれの最初のキーを生成した内の要素の順序に基づいて順序付けされ IGrouping<TKey,TElement> ます。 グループ内の要素は、に表示される順序で表示され source ます。

がの場合 comparer null 、キーの比較には既定の等値比較子 Default が使用されます。

に従って2つのキーが等しいと見なされた場合 comparer 、そのグループのキーとして最初のキーが選択されます。

クエリ式の構文で、 group by (Visual C#) またはGroup By Intoの呼び出しに変換します (Visual Basic) 句GroupByします。 詳細と使用例については、「 group 句group by 句」を参照してください。

こちらもご覧ください

適用対象