20
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2018-04-17

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/

20
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?