2年間C#プロジェクトに携わった中でよく使ってきたLINQまとめ

C#

0. はじめに

ここ2年程、C#を使ったプロジェクトに携わっています。 LINQがこれまた便利なもので、コードがシンプルになるためガシガシ使っているのですが、 備忘録のためよく使うLINQをまとめておきたいかと思います。

1. LINQとは

Language Integrated Queryの略です。 SQLのクエリのような表記を使うことで、データに対する検索や操作を簡単に直感的に行うことができます。 SQLとは違う!!と怒る方もいるようですが、私は気にしません。 DQとFFの違いと思ってください。(←大嘘)

2. よく使ってきたLINQ

2-1. Where

指定した条件に一致する要素のみを抽出します。

var values = new[] { 1, 2, 3, 4, 5 };
values.Where(v => v % 2 == 0); // 結果:2, 4

2-2. Any

要素が含まれているかを調べます。条件を指定することもできます。

var values = new[] { 1, 2, 3, 4, 5 };
values.Any(); // 結果:true
values.Any(v => v == 3); // 結果:true
values.Any(v => v == 7); // 結果:false 

2-3. Contains

指定した要素が含まれているかを調べます。

var values = new[] { 1, 2, 3, 4, 5 };
values.Contains(3); // 結果:true
values.Contains(7); // 結果:false 

2-4. First

先頭要素を取得します。条件を指定することもできます。 値が取得できない場合はエラーとなります。

var values = new[] { 1, 2, 3, 4, 5 };
values.First(); // 結果:1
values.First(v => v % 2 == 0); // 結果:2 
values.First(v => v % 2 == 9); // 結果:エラー  

2-5. FirstOrDefault

先頭要素を取得します。条件を指定することもできます。 値が取得できない場合は型の初期値が返ります。

var values = new[] { 1, 2, 3, 4, 5 };
values.FirstOrDefault(); // 結果:1
values.FirstOrDefault(v => v % 2 == 0); // 結果:2 
values.FirstOrDefault(v => v % 2 == 9); // 結果:0  

2-6. Last

末端要素を取得します。条件を指定することもできます。 値が取得できない場合はエラーとなります。

var values = new[] { 1, 2, 3, 4, 5 };
values.Last(); // 結果:5
values.Last(v => v % 2 == 0); // 結果:4
values.Last(v => v % 2 == 9); // 結果:エラー  

2-7. LastOrDefault

末端要素を取得します。条件を指定することもできます。 値が取得できない場合は型の初期値が返ります。

var values = new[] { 1, 2, 3, 4, 5 };
values.LastOrDefault(); // 結果:5
values.LastOrDefault(v => v % 2 == 0); // 結果:4 
values.LastOrDefault(v => v % 2 == 9); // 結果:0  

2-8. Max

最大要素を取得します。

var values = new[] { 1, 2, 3, 4, 5 };
values.Max(); // 結果:5

2-9. Min

最小要素を取得します。

var values = new[] { 1, 2, 3, 4, 5 };
values.Min(); // 結果:1

2-10. ElementAt

指定したインデックス位置にある要素を取得します。

var values = new[] { 1, 2, 3, 4, 5 };
values.ElementAt(2); // 結果:3

2-11. Distinct

重複する要素を除外します。

var values = new[] { 1, 2, 3, 1, 4, 3, 5 };
values.Distinct(); // 結果:1, 2, 3, 4, 5

2-12. Select

変換関数を適用した結果を取得します。

var values = new[] { 1, 2, 3, 4, 5 };
values.Select(v => v * v); // 結果:1, 4, 9, 16, 25

3. おわりに

LINQを使ってシンプルなコードを書いていきましょう! 他にもありましたら随時更新させて頂きます。

※以下のサイトでC#のビルド・実行が簡単に行えます。ちょっとしたお勉強のときにとても便利!
https://dotnetfiddle.net/