今回のテーマ
こんばんは、かっぱちゃんです。
今回のテーマは下記について書きたいと思います。
今回のテーマ
クラスを定義して、VBのLinqのSelectメソッドについてさらに学んでいきます。
今回はクラスを定義し、LinqのSelectメソッドの便利な使い方を学んでいきます。
まだ、紹介してないLinqメソッドでもクラスを使った方が分かりやすいと思うので、今回はこの記事を書いていこうと思いました。
Selectメソッドの基本的な使い方は下記で紹介しています。良ければ見てください。
CHECK
-
-
Visual Basic VBのLinqの使い方(メソッド構文)を解説。SelectメソッドとWhereメソッドの使い方を解説します。
今回のテーマContents1 今回のテーマ2 Linqを使う場面3 Linqメソッドの解説の流れ4 Selectの使い方5 Whereの使い方6 まとめ こんばんは、かっぱちゃんです。 今までC#の ...
続きを見る

今回使うクラスについて
クラスとインスタンスについては他のサイトでも沢山のっているので、詳細には書きません。
ソースコードを見れば、なんとなくわかると思います。
今回の記事では、下記のクラスを扱います。
使用するクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Public Class Robot Dim name, color, skill As String Sub New(_name As String, _color As String, _skill As String) name = _name color = _color skill = _skill End Sub Public Function GetName() Return name End Function Public Function GetColor() Return color End Function Public Function GetSkill() Return skill End Function End Class |
上記のクラスを例に使います。Robotクラスです。名前と色と技を宣言するだけの簡単なクラスです。

C#のエンジニアであれば、絶対買ってほしい本2選
C#の初心者にオススメ!基本はこの本で抑えよう!
Linqの使い方が沢山載っている。中級者以上の方にオススメ!
Linqメソッドの解説の流れ
下記の流れで説明したいと思います。
行いたい処理の例を書きます。
Linqを使用しない書き方と使用する書き方のソースコードを書いていきます。
ソースコードには、リストを使います。
Selectの使い方
実装したクラスを使って、Linqを使って行きましょう。今まで通りLinqを使わない例も記述します。
行いたい処理
複数のインスタンスを生成し、名前を出力したい。
Linqを使用しない例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Imports System Imports System.Linq Module Program Sub Main(args As String()) Dim robotlist As New List(Of Robot) robotlist.Add(New Robot("Rockman", "Blue", "Rock Buster")) robotlist.Add(New Robot("Fireman", "Red", "Firestorm")) robotlist.Add(New Robot("Iceman", "Blue", "Ice Slasher")) robotlist.Add(New Robot("Elecman", "Yellow", "thunder Beam")) For Each robot In robotlist Console.WriteLine(robot.GetName) Next End Sub End Module |
result
Rockman
Fireman
Iceman
Elecman
上記のように記述できます。ロボットリストを作成し、各ロボットのインスタンスを作成します。
ロボットリストをforeach文で指定することで各ロボットの名前を出力することが可能です。
続けてLinqを使用した例です。nを使用しているところはxなどにもできます。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Imports System Imports System.Linq Module Program Sub Main(args As String()) Dim robotlist As New List(Of Robot) robotlist.Add(New Robot("Rockman", "Blue", "Rock Buster")) robotlist.Add(New Robot("Fireman", "Red", "Firestorm")) robotlist.Add(New Robot("Iceman", "Blue", "Ice Slasher")) robotlist.Add(New Robot("Elecman", "Yellow", "thunder Beam")) Dim robotnamelist = robotlist.Select(Function(n) n.GetName) For Each robotname In robotnamelist Console.WriteLine(robotname) Next End Sub End Module |
result
Rockman
Fireman
Iceman
Elecman
上記のようにSelect文を使用しました。「全然、変わらないよ」と思われるかもしれません。
この記事ではLinqを使えば、1つの要素だけ抜き出したリストを簡単に作れることを分かって頂きたいです。
今回の例では、ロボットの名前だけ指定して、新しいリストを作成し、出力しています。

複数個の属性を抜き出す方法
複数個の属性を指定することもできます。下記のようにします。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Imports System Imports System.Linq Module Program Sub Main(args As String()) Dim robotlist As New List(Of Robot) robotlist.Add(New Robot("Rockman", "Blue", "Rock Buster")) robotlist.Add(New Robot("Fireman", "Red", "Firestorm")) robotlist.Add(New Robot("Iceman", "Blue", "Ice Slasher")) robotlist.Add(New Robot("Elecman", "Yellow", "thunder Beam")) Dim robotnamecolorlist = robotlist.Select(Function(n) (n.GetName, n.GetColor)) For Each robotnamecolor In robotnamecolorlist Console.WriteLine(robotnamecolor) Next End Sub End Module |
result
(Rockman, Blue)
(Fireman, Red)
(Iceman, Blue)
(Elecman, Yellow)
下記のようにSelect文の左辺を()で囲み、2つの要素を指定するとリストを作成することが出来ます。
この書き方はタプルという技術を使用しています。
1 |
(n.GetName, n.GetColor) |
リストをそのまま出力してみると、各属性が整理された値が出力されます。
もちろん、下記のように指定すれば名前のみ抜き出すことも可能です。
1 |
Console.WriteLine(robotnamecolor.GetName); |
色の指定も簡単です。
1 |
Console.WriteLine(robotnamecolor.GetColor); |

まとめ
今回はクラスを定義し、さらにSelect文を使いこなす方法を学びました。
このようなSelectの使い方は沢山行うことがあるので、是非覚えてください。
他にも様々な使い方があるので、他記事で沢山紹介していきたいと思います。

プログラミング能力を上げたい方は是非オンラインのプログラミング教室も検討してみてくださいね!!
一人で独学をするよりもプロからオンラインでプログラミングを教えてもらった方が10倍は効率いいです!!
私が厳選したオススメのオンライン教室を貼っておきます!!どちら共、エンジニアとしての就職までサポートしてくれる素晴らしい教室です。キャリアなどの個別相談は無料ですよ!!
申し込みは完全無料!未経験でITエンジニアを目指したい方にオススメ!
Webエンジニアになりたい方にオススメ!個別相談は無料!
