linqでのgroupbyの使い方は何ですか。

LINQでは、GroupByメソッドが指定されたキーに基づいてシーケンスの要素をグループ化するために使用されます。これは、要素のグループを含むシーケンスを返します。GroupByメソッドは、シーケンスからキーを抽出するためのキーセレクタ関数を受け入れることができます。以下はGroupByメソッドの構文です:

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

sourceとは、グループ化されるシーケンスを表し、keySelectorは要素に基づいてキーを返す関数です。

以下は、GroupByメソッドを使用する方法を示す例です。

var students = new List<Student>()
{
    new Student { Name = "John", Age = 20 },
    new Student { Name = "Jane", Age = 19 },
    new Student { Name = "Tom", Age = 20 },
    new Student { Name = "Alice", Age = 19 },
    new Student { Name = "Bob", Age = 21 }
};

var groupedStudents = students.GroupBy(s => s.Age);

foreach (var group in groupedStudents)
{
    Console.WriteLine($"Age: {group.Key}");

    foreach (var student in group)
    {
        Console.WriteLine($"Name: {student.Name}");
    }
}

上記の例では、学生の年齢に基づいてGroupByメソッドを使用して学生をグループ化しました。次に、foreachループで各グループを繰り返し処理して、年齢と学生の名前を出力しました。

出力は次のようになります:

Age: 20
Name: John
Name: Tom

Age: 19
Name: Jane
Name: Alice

Age: 21
Name: Bob

上記の例でのStudentクラスの定義は以下の通りです:

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

GroupByメソッドは、同じキーを持つ要素のコレクションを表すIEnumerable<IGrouping<TKey, TSource>>を返します。ここで、IGrouping<TKey, TSource>はインターフェースであり、同じキーを持つ要素を表します。

bannerAds