月ノ書

C#のLINQ入門|覚えておくと便利な基本構文とコレクション操作

var result = numbers.Where(n => n > 10);

LINQとは何か

LINQ(Language Integrated Query)は、
コレクションを問い合わせるように操作できる仕組みです

var result = numbers.Where(n => n > 10);

この1行で
「10より大きい数だけ取り出す」
という処理が書けています

for や foreach を使わずに、意図がそのままコードになるのが最大の魅力です

LINQを使う準備

LINQを使うには、次の using が必要です

using System.Linq;

これを忘れると、LINQメソッドが使えないので注意です

LINQの基本的な考え方

LINQは
「元のコレクションから、条件に合うものを取り出す」
という流れで考えます

この順番を意識すると、読みやすくなります

Where|条件で絞り込む

一番よく使われるのが Where です

List<int> numbers = new List<int> { 5, 10, 15, 20 };

var result = numbers.Where(n => n >= 10);

このコードは
「10以上の要素だけを取得する」
という意味になります

Select|データを変換する

Select は、要素を別の形に変換します

var doubled = numbers.Select(n => n * 2);

元の List は変わらず、新しい結果が返ってきます
LINQは基本的に「元データを壊さない」設計になっています

Count / Any|存在チェック

件数を調べたいときや、存在するかどうかを知りたいときに使います

int count = numbers.Count();
bool hasLarge = numbers.Any(n => n > 100);

if 文と組み合わせると、とても読みやすくなります

First / FirstOrDefault

条件に合う最初の要素を取得します

var first = numbers.First(n => n >= 10);

ただし、条件に合う要素が存在しない場合は例外になります
安全に扱いたい場合は FirstOrDefault を使います

OrderBy|並び替え

データを並び替えたいときに使います

var sorted = numbers.OrderBy(n => n);

降順にしたい場合は OrderByDescending を使います

LINQとforeachの組み合わせ

LINQの結果は、そのまま foreach で処理できます

foreach (var n in numbers.Where(n => n > 10))
{
    Console.WriteLine(n);
}

「条件に合うものを表示する」という意図が、とても自然に読めます

DictionaryとLINQ

Dictionary でもLINQは使えます

var highScores = scores.Where(s => s.Value >= 90);

キーと値を同時に扱えるので、フィルタ処理がとても楽になります

LINQを使うときの注意点

LINQは便利ですが、使いすぎには注意です

短く書けるからこそ、読みやすさを最優先にするのが大切です

まとめ

DBを扱っていたら見たことのある単語が多く、理解がしやすいと思います。実務でも使えるものですので覚えておくと便利ですよ

学習進捗