Linq

C# LinqのGroupbyの使い方 グループ化したリストや配列の最大値、最小値、合計、平均値、件数を求める方法

今回のテーマ

こんばんは、かっぱちゃんです。

今回のテーマは下記の記事について書いていきます。

今回のテーマ

グループ化したリストや配列から最大値、最小値、合計、平均値、件数を求める方法

今回の記事も理解するのが難しいと思いますが、Linqの応用編としてグループ化したリストや配列に対して、最大値などを求めていきたいと思います。

下記の記事でGroupbyについて解説しています。

CHECK

C# Linqは便利なので使い方を覚えよう。GroupByを使ってグループ化しよう。

今回のテーマContents1 今回のテーマ2 GroupByについて2.1 GroupBy3 Linqメソッドの解説の流れ4 定義するクラスについて5 GroupByの使い方6 2つ以上指定する方法 ...

続きを見る

Linqの記事は下記にまとめました。

他のLinqの記事についてはこちら

合わせて読みたいC# Linqを勉強するならこれだけは読んでほしいオススメの本3選 オススメの参考書

C#を勉強するためのオススメの本を紹介Contents1 C#を勉強するためのオススメの本を紹介1.1 C#の基礎を学ぶなら「やさしいC#」1.2 C#の全体像を学ぶなら「独習C#」1.3 C#をさら ...

続きを見る

今回もグループ化についてさらに深く学ぼう
KappaChan

今回使用するクラス

今回は下記のクラスを使用します。何回も使用しているロボットクラスです。

グループ化のおさらい

まずはグループ化について、簡単におさらいしましょう。グループ化するメソッドは下記の二つがあります。

グループ化メソッド

  • Groupby
  • ToLookup

基本的にどちらを使用してもいいのですが、ToLookupを使用すると、Directoryのように直接キーを入力して要素を呼び出すことが可能です。

今回はGroupbyを使用するので、サンプルプログラムを下記に記述します。

色別にロボットを出力する

 result
Color:Blue Name:Rockman
Color:Blue Name:Iceman
Color:Blue Name:Airman
Color:Blue Name:Shadowman
-------------------------------------
Color:Red Name:Fireman
Color:Red Name:Quickman
-------------------------------------
Color:Yellow Name:Elecman
-------------------------------------
Color:Pink Name:Roll
-------------------------------------
Color:Green Name:Woodman
Color:Green Name:Bubbleman
-------------------------------------

色別にグループ化されていますね。これからグループ化した各リストの最大値、最小値、合計、平均を求めていきます。

グループ化した各リストから最大値を求める。

まずは各色リストから最大の強さを取り出す方法を記述していきます。最大値を求めるのでMaxを使用します。

それでは、早速ソースコードを書いていきます。

色別の各リストから最大の強さを求める

 result
Color:Blue MaxStrength:5
Color:Red MaxStrength:5
Color:Yellow MaxStrength:4
Color:Pink MaxStrength:1
Color:Green MaxStrength:3

各リストから最大の強さを求めることができています。

今回の例ではSelectメソッドで色分けした各リストを参照し、最大値を求めています。

このやり方さえ覚えれば、他の最小値、合計、平均も同じように求めることが出来ます。

グループ化した各リストから最小値を求める。

次は最小値を求めます。基本的に同じですが、作成者別リストから強さの最小値を求めてみましょう。

作成者別の各リストから最小の強さを出力する

 result
Maker:Dr Light MinStrength:1
Maker:Dr Wily MinStrength:2

最小値もSelectメソッドで指定し、Minを使用することで出力できていますね。

グループ化した各リストから合計を求める。

次は、強さの合計を求めてみましょう。

色別の各リストから強さを合計した値を出力

 result
Color:Blue SumStrength:14
Color:Red SumStrength:8
Color:Yellow SumStrength:4
Color:Pink SumStrength:1
Color:Green SumStrength:5

基本的な考え方は同じですね。

グループ化した各リストから平均値を求める。

強さの平均値を求めてみましょう。

色別の各リストから強さを平均した値を出力

 result
Color:Blue AverageStrength:3.5
Color:Red AverageStrength:4
Color:Yellow AverageStrength:4
Color:Pink AverageStrength:1
Color:Green AverageStrength:2.5

平均も求めることができました。

グループ化した各リストの件数を求める。

最後に各リストの件数を求めてみましょう。

色別の各リストの件数を出力

 result
Color:Blue Count:4
Color:Red Count:2
Color:Yellow Count:1
Color:Pink Count:1
Color:Green Count:2

各リストの件数を求められていますね。

まとめ

今回は各グループの最大値、最小値、合計、平均、件数を求めるソースコードを書いていきました。

Linqでのグループ化について、より深く学ぶことが出来ればいいと思っています。

記事を最後まで見て頂き、ありがとうございました。

KappaChan
最後まで見てくれてありがとう!

他のLinqの記事についてはこちら

プログラミングを一人で独学をするならプロからオンラインで教えてもらいましょう!10倍効率いいです!!

数多くあるプログラミング教室の中で2つのオンライン教室を厳選しました!どちら共、エンジニアとしての就職までサポートしてくれる本当にオススメの教室です。個別相談は完全無料です!!

カウンセリングは完全無料!未経験でITエンジニアを目指したい方にオススメ!

Webエンジニアになりたい方にオススメ!個別相談は無料!

KappaChan
オンラインのプログラミング教室は本当にオススメかっぱ!!

新しいサイト作りました。アニメのまとめサイトです。

レインボーリアルタイムTwitter(アニメ版)

レインボーリアルタイムTwitter(映画版)

-Linq

X