この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Enumerable.GroupBy<TSource, TKey, TResult> メソッド (IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey, IEnumerable<TSource>, TResult>)

 

公開日: 2016年10月

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

名前空間:   System.Linq
アセンブリ:  System.Core (System.Core.dll 内)

public static IEnumerable<TResult> GroupBy<TSource, TKey, TResult>(
	this IEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	Func<TKey, IEnumerable<TSource>, TResult> resultSelector
)

パラメーター

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

IEnumerable<T> をグループ化する要素を格納します。

keySelector
Type: System.Func<TSource, TKey>

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

resultSelector
Type: System.Func<TKey, IEnumerable<TSource>, TResult>

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

戻り値

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

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

型パラメーター

TSource

要素の型 sourceします。

TKey

によって返されるキーの種類 keySelectorします。

TResult

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

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

次のコード例では、使用して 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
    */
}

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
3.5 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能
トップに戻る
表示: