Linq

C# Linqメソッド応用編 グループ化したリストや配列から特定の要素を取り出す方法

今回のテーマ

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

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

今回のテーマ

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

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

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

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

CHECK

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

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

続きを見る

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

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

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

続きを見る

今回使用するクラス

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

グループ化のおさらい

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

グループ化メソッド

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

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

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

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

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

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

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

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

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

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

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

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

-Linq

X