今回のテーマ
こんばんは、サルモリです。
今回は下記の記事の続きです。
CHECK
-
【C# sharp Linq】Avarageメソッド、Maxメソッド、Minメソッド、Sumメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
今回のテーマ
Linqのメソッド、CountとSequenceEqualとFirstOrDefaultメソッドついて解説します。
今回は上記の3つのメソッドについて解説します。
他のLinqの記事についてはこちら
LinqのCount、SequenceEqual、FirstOrDefaultについて
Count
要素の数を返します。
SequenceEqual
二つの要素が全て一致している場合、trueを返します。一致していない場合、falseを返します。
FirstOrDefault
条件に一致する最初の要素を取得します。
Linqメソッドの解説の流れ
下記の流れで説明したいと思います。
行いたい処理の例を書きます。
Linqを使用しない書き方と使用する書き方のソースコードを書いていきます。
ソースコードには、配列を使います。
Countの使い方
Countの使い方について、例を書いていきます。
行いたい処理
2の個数を出力する。
Linqを使用しない例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int[] array = new int[] { 1, 2, 5, 4, 3, 2 ,2}; int count = 0; foreach(var item in array) { if(item == 2) { count++; } } Console.WriteLine(count); } } } |
result
3
繰り返し文で2の数をカウントを行います。
続けてLinqを使用した例です。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int[] array = new int[] { 1, 2, 5, 4, 3, 2 ,2}; Console.WriteLine(array.Count(n => n == 2)); } } } |
result
3
今回の例も一行で完成です。
因みに下記のように指定すると、
1 |
array.Count() |
値は7が返ります。全要素の数を求めたい場合は、何も指定する必要はありません。
SequenceEqual
続けてSequenceEqualの使い方の例を見てみましょう。
行いたい処理
二つの配列の要素が全て一致していたら、「全て一致しています」と出力したい。
Linqを使用しない例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int[] array1 = new int[] { 1, 2, 5, 4, 3, 2 ,2}; int[] array2 = new int[] { 1, 2, 5, 4, 3, 2, 2}; bool equal = true; if(array1.Length != array2.Length) { equal = false; } else{ for(int i = 0;i < array1.Length; i++) { if(array1[i] != array2[i]) { equal = false; break; } } } if (equal) { Console.WriteLine("全て一致しています"); } } } } |
result
全て一致しています
配列が全て一致しているか判定する処理を書きました。
結構長くなってしまいますね。
次はLinqを使った例をみてみましょう。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { int[] array1 = new int[] { 1, 2, 5, 4, 3, 2 ,2}; int[] array2 = new int[] { 1, 2, 5, 4, 3, 2, 2}; if(array1.SequenceEqual(array2)) Console.WriteLine("全て一致しています"); } } } |
result
全て一致しています
この処理も一行で実現できます。
SequenceEqualは他と比べて覚えにくいかもしれませんが、覚えておくとかなり便利な時があります。
FirstOrDefaultの使い方
次はFirstOrDefaultです。
行いたい処理
文字列の長さが3の最初の要素を取り出したい。
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.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { string[] array1 = new string[] {"lion" ,"mouse" , "cat", "dog","fox","bear"}; var name = ""; foreach(var item in array1) { if(item.Length == 3) { name = item; break; } } Console.WriteLine(name); } } } |
result
cat
文字列が3のcatを取り出しました。続けて、Linqを使ってみましょう。
Linqを使用する例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { string[] array1 = new string[] {"lion" ,"mouse" , "cat", "dog","fox","bear"}; var name = array1.FirstOrDefault(n => n.Length == 3); Console.WriteLine(name); } } } |
result
cat
簡単に実装できますね。
ポイント
Linqのメソッドの中には、Firstメソッドも存在します。しかし、Firstの場合は、値が見つからない場合、InvalidOperationException例外が発生します。
FirstOrDefaultであれば、値が見つからない場合、nullを返してくれるので、基本的にこちらのメソッドを使うようにしましょう。
後ろから検索するLastOrDefaultも一緒に覚えましょう。
今回の例では、下記のように指定すると結果はfoxが返ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { string[] array1 = new string[] {"lion" ,"mouse" , "cat", "dog","fox","bear"}; var name = array1.LastOrDefault(n => n.Length == 3); Console.WriteLine(name); } } } |
result
fox
他のLinqの記事についてはこちら
まとめ
今回もLinqメソッドの紹介記事でした。今回の取り上げたメソッドを下記に纏めます。
今回のメソッド一覧
- Count
- SequenceEqual
- FirstOrDefault
- LastOrDefault
今回紹介したメソッドも使う頻度が高いので、この機会に覚えましょう。
最後まで見て頂きありがとうございました。
次回の記事です。
CHECK
-
【C# sharp Linq】Take、Skip、TakeWhile、SkipWhileメソッドを解説します。
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
他のLinqの記事についてはこちら