本文へスキップ
BecomeCoder

C#文法コース · 第5章 LINQ · レッスン39

集計(Count・Sum・Average・Max・Min)

ブラウザで完結

導入

「何件あるか」「合計は」「平均は」——コレクション全体を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です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。