Help us understand the problem. What is going on with this article?

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/

i-tanaka730
福井でWeb・スマホ・Windowsのアプリケーション開発をしてます🍀 ストレスの軽減、勉強・仕事の効率化、人間関係についても勉強中です🌈 【C# / Java / PHP / Python / JS / Flutter / .NET / Docker / UML etc.】
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした