データのグループ化

グループ化とは、共通の属性を共有する要素がそれぞれのグループを形成するように、データをいくつかのグループに分ける操作です。

次の図は、文字のシーケンスをグループ化した結果を示しています。各グループのキーは文字です。

LINQ グループ化操作

次のセクションに、データ要素をグループ化する標準クエリ演算子のメソッドの一覧を示します。

メソッド

メソッド名

Description

C# のクエリ式の構文

Visual Basic のクエリ式の構文

詳細情報

GroupBy

共通の属性を共有する要素をグループ化します。各グループは IGrouping<TKey, TElement> オブジェクトで表されます。

group … by

または

group … by … into …

Group … By … Into …

Enumerable.GroupBy

Queryable.GroupBy

ToLookup

キー セレクター関数に基づいて、要素を Lookup<TKey, TElement> (一対多のディクショナリ) に挿入します。

該当なし

該当なし

Enumerable.ToLookup

クエリ式の構文の例

次のコード例では、C# の group by 句または Visual Basic の Group By 句を使用して、偶数か奇数によってリスト内の整数をグループ化します。


        Dim numbers As New System.Collections.Generic.List(Of Integer)(
             New Integer() {35, 44, 200, 84, 3987, 4, 199, 329, 446, 208})

        Dim query = From number In numbers 
                    Group By Remainder = (number Mod 2) Into Group

        Dim sb As New System.Text.StringBuilder()
        For Each group In query
            sb.AppendLine(If(group.Remainder = 0, vbCrLf & "Even numbers:", vbCrLf & "Odd numbers:"))
            For Each num In group.Group
                sb.AppendLine(num)
            Next
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' Odd numbers:
        ' 35
        ' 3987
        ' 199
        ' 329

        ' Even numbers:
        ' 44
        ' 200
        ' 84
        ' 4
        ' 446
        ' 208


            List<int> numbers = new List<int>() { 35, 44, 200, 84, 3987, 4, 199, 329, 446, 208 };

            IEnumerable<IGrouping<int, int>> query = from number in numbers
                                                     group number by number % 2;

            foreach (var group in query)
            {
                Console.WriteLine(group.Key == 0 ? "\nEven numbers:" : "\nOdd numbers:");
                foreach (int i in group)
                    Console.WriteLine(i);
            }

            /* This code produces the following output:

                Odd numbers:
                35
                3987
                199
                329

                Even numbers:
                44
                200
                84
                4
                446
                208
            */

参照

処理手順

方法: 入れ子になったグループを作成する (C# プログラミング ガイド)

方法: 拡張子別にファイルをグループ化する (LINQ)

方法: クエリ結果をグループ化する (C# プログラミング ガイド)

方法: グループ化操作でサブクエリを実行する (C# プログラミング ガイド)

方法: グループを使用して 1 つのファイルを複数のファイルに分割する (LINQ)

関連項目

group 句 (C# リファレンス)

Group By 句 (Visual Basic)

System.Linq

概念

標準クエリ演算子の概要