次の方法で共有


データのグループ化

更新 : 2007 年 11 月

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

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

LINQ グループ化操作

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

メソッド

メソッド名

説明

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

データのグループ化方法に関する詳細情報

Topic Location
方法 : 拡張子別にファイルをグループ化する (LINQ) 統合言語クエリ (LINQ: Language-Integrated Query)
方法 : グループを使用して 1 つのファイルを複数のファイルに分割する (LINQ) 統合言語クエリ (LINQ: Language-Integrated Query)
方法 : グループ化操作でサブクエリを実行する (C# プログラミング ガイド) C# プログラマーズ リファレンス
方法 : グループをグループ化する (C# プログラミング ガイド) C# プログラマーズ リファレンス
group 句 (C# リファレンス) C# プログラマーズ リファレンス
方法 : さまざまな方法で結果をグループ化する (C# プログラミング ガイド) C# プログラマーズ リファレンス
方法: グループ化操作でサブクエリを実行する (C# プログラミング ガイド) dv_csref
group 句 (C# リファレンス) dv_csref
方法: クエリ結果をグループ化する (C# プログラミング ガイド) dv_csref
方法: 入れ子になったグループを作成する (C# プログラミング ガイド) dv_csref
方法: 拡張子別にファイルをグループ化する (LINQ) dv_Linq
方法: グループを使用して 1 つのファイルを複数のファイルに分割する (LINQ) dv_Linq
方法: 拡張子別にファイルをグループ化する (LINQ) dv_Linq
方法: グループを使用して 1 つのファイルを複数のファイルに分割する (LINQ) dv_Linq
方法: グループ化操作でサブクエリを実行する (C# プログラミング ガイド) dv_csref
group 句 (C# リファレンス) dv_csref
方法: クエリ結果をグループ化する (C# プログラミング ガイド) dv_csref
方法: 入れ子になったグループを作成する (C# プログラミング ガイド) dv_csref

参照

概念

標準クエリ演算子の概要

参照

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

Group By 句 (Visual Basic)

System.Linq