導入
「何件あるか」「合計は」「平均は」——コレクション全体を1つの値にまとめるのが集計メソッドです。自分でループを書かずに一発で求められます。
図解
flowchart LR
IN["[80, 95, 70, 60]"] --> AGG["集計"]
AGG --> C["Count → 4"]
AGG --> S["Sum → 305"]
AGG --> A["Average → 76.25"]
AGG --> MX["Max → 95"]
AGG --> MN["Min → 60"]
サンプル
int[] scores = { 80, 95, 70, 60 };
Console.WriteLine(scores.Count()); // 4 件数
Console.WriteLine(scores.Sum()); // 305 合計
Console.WriteLine(scores.Average()); // 76.25 平均
Console.WriteLine(scores.Max()); // 95 最大
Console.WriteLine(scores.Min()); // 60 最小
// Where と組み合わせて「条件に合うものの件数」も出せる
Console.WriteLine(scores.Count(s => s >= 80)); // 2(80以上の件数)
Count()(件数)、Sum()(合計)、Average()(平均)、Max()/Min()(最大・最小)Count(条件)のように条件を渡すと「条件に合う件数」になる- どれもループを書かずに全体を1値に集約する
演習
int[] sales = { 1200, 3400, 800, 5000, 2200 };
// TODO: 2000円以上の売上だけの合計を求めて "8400" と出力してください
// (Where で絞ってから Sum)
___
- 期待される出力:
8400
ヒント1を見る
sales.Where(s => s >= 2000).Sum()
ヒント2を見る
Console.WriteLine(sales.Where(s => s >= 2000).Sum());
まとめ
Count/Sum/Average/Max/Minでコレクションを1値に集計Count(条件)で条件付きの件数Whereで絞ってから集計する組み合わせが頻出
次回: 要素を並べ替えるOrderByです。