今回のテーマ
こんばんは、サルモリです。
今回のテーマは下記について書きたいと思います。
今回のテーマ
クラスを定義して、LinqのSelectメソッドについてさらに学んでいきます。
今回はクラスを定義し、LinqのSelectメソッドの便利な使い方を学んでいきます。
まだ、紹介してないLinqメソッドでもクラスを使った方が分かりやすいと思うので、今回はこの記事を書いていこうと思いました。
Selectメソッドの基本的な使い方は下記で紹介しています。良ければ見てください。
CHECK
-
【C# sharp Linq】Selectメソッド、Whereメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 C#言語のL ...
続きを見る
CHECK
他のLinqの記事についてはこちら
今回使うクラスについて
クラスとインスタンスについては他のサイトでも沢山のっているので、詳細には書きません。
ソースコードを見れば、なんとなくわかると思います。
今回の記事では、下記のクラスを扱います。
使用するクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class Robot { string name, color, skill; public Robot(string _name,string _color,string _skill) { name = _name; color = _color; skill = _skill; } public String Name { get { return name; } } public String Color { get { return color; } } public String Skill { get { return skill; } } } |
上記のクラスを例に使います。Robotクラスです。名前と色と技を宣言するだけの簡単なクラスです。
Linqメソッドの解説の流れ
下記の流れで説明したいと思います。
行いたい処理の例を書きます。
Linqを使用しない書き方と使用する書き方のソースコードを書いていきます。
ソースコードには、リストを使います。
Selectの使い方
実装したクラスを使って、Linqを使って行きましょう。今まで通りLinqを使わない例も記述します。
行いたい処理
複数のインスタンスを生成し、名前を出力したい。
Linqを使用しない例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { List<Robot> robotlist = new List<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")); foreach(var robot in robotlist) { Console.WriteLine(robot.Name); } } } } |
result
Rockman
Fireman
Iceman
Elecman
上記のように記述できます。ロボットリストを作成し、各ロボットのインスタンスを作成します。
ロボットリストをforeach文で指定することで各ロボットの名前を出力することが可能です。
続けてLinqを使用した例です。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { List<Robot> robotlist = new List<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")); var robotnamelist = robotlist.Select(x => x.Name); foreach(var name in robotnamelist) { Console.WriteLine(name); } } } } |
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 17 18 19 20 21 22 23 |
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { List<Robot> robotlist = new List<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")); var robotnamecolorlist = robotlist.Select(x => new { x.Name, x.Color }); foreach(var namecolor in robotnamecolorlist) { Console.WriteLine(namecolor); } } } } |
result
{ Name = Rockman, Color = Blue }
{ Name = Fireman, Color = Red }
{ Name = Iceman, Color = Blue }
{ Name = Elecman, Color = Yellow }
Select文の左辺をnewで指定し、2つの要素を指定するとリストを作成することが出来ます。
リストをそのまま出力してみると、各属性が整理された値が出力されます。
もちろん、下記のように指定すれば名前のみ抜き出すことも可能です。
1 |
Console.WriteLine(namecolor.Name); |
色の指定も簡単です。
1 |
Console.WriteLine(namecolor.Color); |
他のLinqの記事についてはこちら
まとめ
今回はクラスを定義し、さらにSelect文を使いこなす方法を学びました。
このようなSelectの使い方は沢山行うことがあるので、是非覚えてください。
他にも様々な使い方があるので、他記事で沢山紹介していきたいと思います。
Xmlファイルの読み込みにも使用できます。
こちらもCHECK
-
【C# sharp Linq】Xmlファイルの内容をSelectメソッドを使用して保持する方法2選
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
他のLinqの記事についてはこちら