C#のLINQで学生をグループ化する
このレッスンでは、LINQを使って学生を評価ごとにグループ化し、グループごとの平均点を計算します。
はじめに
LINQのGroupByメソッドは、評価のAやBのようなキーにもとづいて、リストをグループに分けます。その後、グループごとに件数を数えたり、合計や平均を計算したりできます。
GroupBy(s => s.Grade)は学生をAとBのグループに分け、OrderBy(g => g.Key)はグループを名前順に並べます。各グループは評価の名前を表すKeyプロパティを持ち、AverageのようなLINQのメソッドをそのまま使えます。グループAの平均点は93.0、グループBは84.0です。
実行できる C# の例
C#
Program.cs
using System;
using System.Linq;
record Student(string Name, string Grade, int Score);
class Program
{
static void Main()
{
var students = new[] { new Student("Ada", "A", 95), new Student("Lin", "B", 84), new Student("Grace", "A", 91) };
foreach (var group in students.GroupBy(s => s.Grade).OrderBy(g => g.Key))
Console.WriteLine($"{group.Key}: {group.Average(s => s.Score):F1}");
}
}
A: 93.0
B: 84.0デバッガーで練習する
大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
すべてのチャレンジ