【C#】LINQの基本|Where・Selectの使い方

C# にはコレクションや配列を効率的に扱うための強力な機能として「LINQ(Language Integrated Query)」が用意されています。LINQ を使うとデータの検索や変換をシンプルに記述でき、可読性の高いコードを書けます。本記事では基本となる WhereSelect の使い方を解説します。

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 を組み合わせる

WhereSelect を組み合わせることで、抽出と変換を同時に行うことができます。

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 の基本的なメソッドである WhereSelect を理解することで、配列やリストを効率的に処理できます。

  • Where … 条件に一致する要素を抽出
  • Select … 要素を変換して新しいシーケンスを生成
  • 組み合わせて使うと「絞り込み+変換」をシンプルに記述可能

LINQ を活用することで、複雑なデータ処理も簡潔かつ直感的に書けるようになります。まずは WhereSelect を使いこなすところから始めましょう。