C# の LINQ とは何か
LINQ(Language Integrated Query)は、C# に統合されたクエリ機能だ。配列やリスト、データベース、XML など様々なデータソースに対して、統一された構文で問い合わせができる。
なぜ LINQ が必要なのか
LINQ 登場以前、データの操作方法はデータソースごとにバラバラだった。配列には for ループ、データベースには SQL、XML には XPath といった具合に、それぞれ異なる知識が必要だった。
データソースごとに異なる操作方法を覚える必要があった。コードの書き方も統一されず、可読性が低かった。
どのデータソースでも同じ構文で操作できる。型安全で、コンパイル時にエラーを検出できる。
LINQ を使えば、データの絞り込み、並べ替え、変換、集計といった操作を、直感的な構文で記述できる。
基本的な例
数値の配列から偶数だけを取り出す処理を見てみよう。
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// LINQ で偶数だけを抽出
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach (var n in evenNumbers)
{
Console.WriteLine(n); // 2, 4, 6, 8, 10
}Where メソッドに条件を渡すだけで、該当する要素だけを取り出せる。従来の for ループと比べると、コードが簡潔で意図が明確になる。
LINQ の主要な名前空間
LINQ を使うには System.Linq 名前空間を using する必要がある。
using System.Linq;この名前空間には、配列や List<T> などの IEnumerable<T> を実装したコレクションに対する拡張メソッドが定義されている。Where、Select、OrderBy といったメソッドはすべてここに含まれる。
LINQ の種類
LINQ にはいくつかの種類がある。
メモリ上のコレクション(配列、List など)に対するクエリ。最も基本的な LINQ で、本ロールで主に扱う。
データベースに対するクエリ。C# のコードが SQL に変換されて実行される。
XML ドキュメントに対するクエリ。XPath の代わりに使える。
どの種類でも基本的な構文は同じだ。一度 LINQ を覚えれば、様々なデータソースに応用できる。これが LINQ の大きな強みである。