C#のLinqのメソッド一覧

【C# sharp Linq】グループ化したリストや配列から特定の要素を取り出す方法

ChatGPTのAPIを使わずに自動化することが可能です。
下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。

今回のテーマ

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

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

今回のテーマ

グループ化したリストや配列から特定の要素を取り出す方法

今回は理解するのが難しいと思いますが、Linqの応用編としてグループ化したリストや配列に対して、特定の要素を取り出していきたいと思います。

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

GroupByメソッドの使い方は下記の記事で解説しています。

CHECK

【C# sharp Linq】GroupByを使ってグループ化しよう。

ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...

続きを見る

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

今回はGroupByメソッドの応用例だよ!
サルモリ

今回使用するクラス

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

グループ化のおさらい

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

グループ化メソッド

  • 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
-------------------------------------

色別にグループ化されていますね。これからグループ化した各リストから指定した条件の要素を指定していきます。

グループ化した各リストから1つの要素を取り出す方法

まずは各リストから1つずつ要素を取り出す方法を記述していきます。1つだけ取り出すには、FirstOrDefaultメソッドを使いましょう。

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

色別の各リストから1つずつ要素を取り出す方法

 result
Color:Blue Name:Rockman
-------------------------------------
Color:Red Name:Fireman
-------------------------------------
Color:Yellow Name:Elecman
-------------------------------------
Color:Pink Name:Roll
-------------------------------------
Color:Green Name:Woodman
-------------------------------------

各リストから1つずつ要素を取り出すことが出来ています。

グループ化を行う時はリスト内にリストが格納されているイメージを持って下さい。

その為、リスト内のリストを参照するためにSelectメソッドを指定することが必要となります。

Selectメソッドを使用せずに、直接FirstOrDefaultメソッドを指定すると、リスト内に格納されているリストを1つ取り出すことになります。

実際にやってみましょう。1番初めに格納したロックマンのリストが出力されます。

Selectメソッドを使用せずにFirstOrDefaultを使用した場合

 result
Color:Blue Name:Rockman
-------------------------------------
Color:Blue Name:Iceman
-------------------------------------
Color:Blue Name:Airman
-------------------------------------
Color:Blue Name:Shadowman
-------------------------------------

ロックマンが属する青色のリストが取り出せていることが分かります。2つの出力結果を見比べると、Groupbyメソッドの理解がさらに深まるでしょう。

グループ化した各リストから強さが3以上のロボットを出力する

もう1つ例を出していきます。各色別リストから強さが3文字以上のロボットを出力してみましょう。

各リストから強さが3以上のロボットのみ出力

 result
Color:Blue Name:Rockman
Color:Blue Name:Shadowman
-------------------------------------
Color:Red Name:Quickman
-------------------------------------
Color:Yellow Name:Elecman
-------------------------------------
-------------------------------------
-------------------------------------

強さが3以上のロボットのみ出力できています。今回の例の場合は各リストから2つ以上の要素が存在する場合もあるので、2重でforeachを書かなければなりません。

まとめ

今回は各グループから指定した条件の要素を取り出す記事を記述しました。

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

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

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

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

-C#のLinqのメソッド一覧

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock