Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
23
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@i-tanaka730

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

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/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
23
Help us understand the problem. What are the problem?