Linq

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

このブログではAffinger5を使用しています。

ブログテーマが気に入った方はコチラをクリック

今回のテーマ

こんばんは、サルモリです。

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

今回のテーマ

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

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

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

CHECK

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

このブログではAffinger5を使用しています。ブログテーマが気に入った方はコチラをクリック 今回のテーマ こんばんは、サルモリです。 今回もLinqのメソッドを紹介してきます。今回紹介するメソッド ...

続きを見る

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

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

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

今回使用するクラス

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

グループ化のおさらい

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

グループ化メソッド

  • 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でのグループ化について、より深く学ぶことが出来ればいいと思っています。

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

サルモリ
最後まで見てくれてありがとう!

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

C#のLinqをさらに学びたい方へ

C#のLinqを理解して頂くために参考書を執筆致しました!

Linqの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!

下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!

⇩初心者向け      ⇩中級者向け

C#でChatGPTAPIを使ってブログ作成を自動化しませんか?

-Linq

Ads Blocker Image Powered by Code Help Pro

広告ブロックを検出しました。

ブラウザの広告機能を使用して広告をブロックしていることが検出されました。
ブラウザの広告ブロッカーを無効にし、「更新」をクリックしてください。

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock