C#でのgroupbyの使い方は何ですか?
C#では、GroupByメソッドはコレクションの要素を指定されたキーに基づいてグループ化するために使用されます。これは、グループ化された結果を含むIEnumerable<IGrouping<TKey, TElement>>オブジェクトを返します。ここで、TKeyはグループのキーの型であり、TElementはコレクション内の要素の型です。
GroupByメソッドには複数のオーバーロード形式がありますが、最も一般的な形式はFunc<TSource, TKey>パラメーターを受け入れ、グループ化のキーを選択するための関数を定義します。例えば、次の例では、文字列の長さで文字列コレクションをグループ化します。
List<string> strings = new List<string> { "apple", "banana", "orange", "pear", "grape" };
var groups = strings.GroupBy(s => s.Length);
foreach (var group in groups)
{
Console.WriteLine($"Group key: {group.Key}");
foreach (var element in group)
{
Console.WriteLine($"Element: {element}");
}
Console.WriteLine();
}
結果:
Group key: 5
Element: apple
Element: grape
Group key: 6
Element: banana
Group key: 6
Element: orange
Group key: 4
Element: pear
上記の例では、strings.GroupBy(s => s.Length)は文字列コレクションを文字列の長さでグループ化し、4つのグループを含むIEnumerable<IGrouping<int, string>>オブジェクトを返します。各グループにはキー(文字列の長さ)があり、group.Keyでアクセスできます。各グループはイテラブルなコレクションであり、groupを介してアクセスできます。