今回のテーマ
こんばんは、サルモリです。
今回もLinqのメソッドを紹介してきます。今回紹介するメソッドは下記です。
今回のテーマ
Linqのメソッド、Union、Intersect、Exceptの使い方
今回はUnion、Intersect、Exceptメソッドについて解説します。Sqlを理解している方は取っ付きやすいメソッドかもしれませんね。
3つのメソッドは2つの配列やリストに対して使用するメソッドです。
前回の記事です。良ければ下記の記事も見てください。
CHECK
-
【C# sharp Linq】GroupByを使ってグループ化しよう。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
他のLinqの記事についてはこちら
Union、Intersect、Exceptについて
Union
2つの配列から少なくともどちらかに含まれている要素で配列を作成する。
Intersect
2つの配列から両方とも含まれている要素で配列を作成する。
Except
対象の配列からもう一方の配列の要素を取り払った配列を作成する。
Linqメソッドの解説の流れ
下記の流れで説明したいと思います。
行いたい処理の例を書きます。
Linqを使用するソースコードを書いていきます。
ソースコードには、配列を使います。
Unionの使い方
Unionの使い方について、例を書いていきます。今回行いたい処理です。
行いたい処理
2つの配列から少なくともどちらかに含まれているロボットで配列を作成する。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { String[] arrayName = new string[] { "Rockman", "Fireman", "Iceman", "Elecman", "Roll", "Airman"}; String[] arrayName2 = new string[] { "Rockman", "Woodman", "Quickman", "Roll" }; var arrayRobot = arrayName.Union(arrayName2); foreach(var item in arrayRobot) { Console.WriteLine(item); } } } } |
result
Rockman
Fireman
Iceman
Elecman
Roll
Airman
Woodman
Quickman
どちらかに含まれているロボットが全て出力されていますね。
Unionで気を付けてほしいのは重複する要素は1つとなることです。
例でも分かるように、ロックマンとロールちゃんが新しい配列では1つしか出力されていません。
この点だけ気を付ければ後は問題ないと思います。
Intersectの使い方
次はIntersectメソッドの使い方について解説します。
行いたい処理
2つの配列から両方とも含まれているロボットで配列を作成する。
Linqを使用した例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { String[] arrayName = new string[] { "Rockman", "Fireman", "Iceman", "Elecman", "Roll", "Airman"}; String[] arrayName2 = new string[] { "Rockman", "Woodman", "Quickman", "Roll" }; var arrayRobot = arrayName.Intersect(arrayName2); foreach(var item in arrayRobot) { Console.WriteLine(item); } } } } |
result
Rockman
Roll
両方とも存在しているロックマンとロールちゃんのみ出力されていますね。
Exceptの使い方
最後にExceptメソッドの使い方について解説します。
行いたい処理
1つ目のロボットから2つ目のロボットを無くしたロボットを出力したい。
Linqを使用した例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { String[] arrayName = new string[] { "Rockman", "Fireman", "Iceman", "Elecman", "Roll", "Airman"}; String[] arrayName2 = new string[] { "Rockman", "Woodman", "Quickman", "Roll" }; var arrayRobot = arrayName.Except(arrayName2); foreach(var item in arrayRobot) { Console.WriteLine(item); } } } } |
result
Fireman
Iceman
Elecman
Airman
2つ目の配列に存在するロックマンとロールちゃんを無くしたロボットを出力しています。
今回のメソッドは結構覚えやすいと思います。
まとめ
今回もLinqメソッドの紹介記事でした。今回の取り上げたメソッドを下記に纏めます。
今回のメソッド一覧
- Union
- Intersect
- Except
今回は上記のメソッドについて、紹介しました。
上記の3つのメソッド以外にJoinメソッドという2つの配列の要素を結合するメソッドがあるのですが、指定の仕方が多少複雑なので、今回は解説しません。
ひとまず、Linqメソッドは一通り紹介することが出来たので、今度からは複数一緒に使うパターンや紹介したメソッドだけどさらに使い方を紹介する記事などを書いていきたいと思います。
後、=>について詳しく触れてこなかったので、詳しく解説する記事も書きます。(デリゲートから詳しくやります・・。)
今まで紹介したメソッドを使いこなすことで開発がかなり楽になることは間違いなしなので、
ぜひ何回も見直して覚えてくださいね。
他のLinqの記事についてはこちら