C# にはコレクションや配列を効率的に扱うための強力な機能として「LINQ(Language Integrated Query)」が用意されています。LINQ を使うとデータの検索や変換をシンプルに記述でき、可読性の高いコードを書けます。本記事では基本となる Where
と Select
の使い方を解説します。
Where|条件で絞り込む
Where
はコレクションから条件に一致する要素だけを抽出します。SQL の WHERE
に相当する機能です。
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// 偶数だけを抽出
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach (var n in evenNumbers)
{
Console.WriteLine(n);
}
// 出力: 2, 4, 6
}
}
Where
の引数にはラムダ式を使い、各要素を評価する条件を書きます。
Select|要素を変換する
Select
は各要素を変換して新しいシーケンスを生成します。SQL の SELECT
に相当する機能です。
string[] names = { "Taro", "Hanako", "Jiro" };
// すべて大文字に変換
var upperNames = names.Select(name => name.ToUpper());
foreach (var name in upperNames)
{
Console.WriteLine(name);
}
// TARO, HANAKO, JIRO
文字列の変換だけでなく、オブジェクトの特定プロパティを取り出す場合にも利用されます。
var lengths = names.Select(name => name.Length);
foreach (var len in lengths)
{
Console.WriteLine(len);
}
// 4, 6, 4
Where と Select を組み合わせる
Where
と Select
を組み合わせることで、抽出と変換を同時に行うことができます。
int[] numbers = { 1, 2, 3, 4, 5, 6 };
// 偶数だけを2倍にする
var doubled = numbers
.Where(n => n % 2 == 0)
.Select(n => n * 2);
foreach (var n in doubled)
{
Console.WriteLine(n);
}
// 出力: 4, 8, 12
まとめ
LINQ の基本的なメソッドである Where
と Select
を理解することで、配列やリストを効率的に処理できます。
Where
… 条件に一致する要素を抽出Select
… 要素を変換して新しいシーケンスを生成- 組み合わせて使うと「絞り込み+変換」をシンプルに記述可能
LINQ を活用することで、複雑なデータ処理も簡潔かつ直感的に書けるようになります。まずは Where
と Select
を使いこなすところから始めましょう。