カテゴリ: C# 更新日: 2026/01/20

C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!

C#のLINQとは?基本概念とできることをやさしく解説
C#のLINQとは?基本概念とできることをやさしく解説

先生と生徒の会話形式で理解しよう

生徒

「先生、大量のデータの中から特定の条件に合うものだけを取り出したいとき、どうすればいいですか?」

先生

「そんなときは、C#の『LINQ(リンク)』という機能を使うのが一番便利ですよ。データクエリとも呼ばれる技術です。」

生徒

「リンク……?難しそうですね。私、パソコンもあまり詳しくないのですが大丈夫でしょうか?」

先生

「大丈夫です。スーパーマーケットの棚から欲しい商品を探し出すような感覚で学べます。それでは、LINQの基本的な使い方を見ていきましょう!」

1. LINQ(リンク)とは何か?

1. LINQ(リンク)とは何か?
1. LINQ(リンク)とは何か?

C#のLINQ(Language Integrated Query:言語統合クエリ)は、データの集まりから必要な情報を抜き出したり、並び替えたりするための魔法のような道具です。 普段、私たちが膨大なリストの中から「特定の名前の人だけを探す」とか「金額が安い順に並べる」といった作業を、たった数行のコードで実現してくれます。

プログラミング未経験の方にとって、「クエリ」という言葉は聞き馴染みがないかもしれません。 クエリとは、簡単に言うと「データに対するお願い(問い合わせ)」のことです。 「このリストの中から、30歳以上の人だけを教えて!」といったお願いを、コンピューターが理解できる形式で書くのがLINQの役割です。

用語解説:クエリ
データベースやデータの集まりに対して、「データを取得してください」「並べ替えてください」といった命令を出すことを指します。

2. なぜLINQを使うと便利なの?

2. なぜLINQを使うと便利なの?
2. なぜLINQを使うと便利なの?

LINQが登場する前は、データの塊(配列やリストなど)から特定のものを取り出すために、「繰り返し(for文)」や「条件分岐(if文)」を組み合わせて何行もコードを書く必要がありました。 しかし、LINQを使うとまるで「日本語で指示を出しているかのように」シンプルに記述できます。

LINQの主なメリットは以下の通りです。

  • コードが短くなり、読みやすくなる。
  • データの種類(メモリ上のリスト、データベース、XMLなど)が変わっても、同じ書き方で操作できる。
  • 書き方のミスが減り、バグ(プログラムの不具合)が見つけやすくなる。

3. LINQの基本的な使い方(メソッド構文)

3. LINQの基本的な使い方(メソッド構文)
3. LINQの基本的な使い方(メソッド構文)

LINQには2つの書き方がありますが、現代のプログラミングで最もよく使われる「メソッド構文」を中心に解説します。 これは、データの集まりに対して「ドット(.)」で命令をつないでいく書き方です。

データを絞り込む:Where(ウェア)

「Where」は、条件に合うものだけを抽出するための命令です。 例えば、数字のリストから「5より大きい数字だけ」を取り出す場合は、次のように書きます。


using System;
using System.Linq; // LINQを使うために必要です
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // 数字のリストを用意します
        List<int> numbers = new List<int> { 1, 3, 5, 7, 9 };

        // 5より大きい数字だけを取り出します
        var result = numbers.Where(n => n > 5);

        foreach (var x in result)
        {
            Console.WriteLine(x);
        }
    }
}

実行結果:


7
9

ここで出てくる n => n > 5 という書き方は「ラムダ式」と呼ばれます。 「リストの中の一つひとつの要素(n)が、5より大きいかどうか」を判定していると考えてください。

4. データを並べ替える:OrderBy(オーダーバイ)

4. データを並べ替える:OrderBy(オーダーバイ)
4. データを並べ替える:OrderBy(オーダーバイ)

次に、データを並べ替える方法を見てみましょう。 例えば、バラバラな数字を小さい順(昇順)に並べたいときは OrderBy を使います。 逆に、大きい順(降順)にしたいときは OrderByDescending を使います。


List<int> scores = new List<int> { 80, 50, 100, 20, 70 };

// 点数が低い順に並べ替えます
var sortedScores = scores.OrderBy(s => s);

foreach (var s in sortedScores)
{
    Console.WriteLine(s);
}

実行結果:


20
50
70
80
100

このように、リストの中身を自動的に整理してくれるので、手動で並び替えのプログラムを作る手間が省けます。 現実の世界で言えば、トランプのカードを数字の小さい順に自動で並べてくれるような、とても便利な機能です。

5. データを変換する:Select(セレクト)

5. データを変換する:Select(セレクト)
5. データを変換する:Select(セレクト)

Select は、データの中から特定の項目だけを抜き出したり、中身を少し加工したりするときに使います。 例えば、名前のリスト全員に「様」を付け加えたい、といった場合に役立ちます。


List<string> names = new List<string> { "田中", "佐藤", "鈴木" };

// 名前の後ろに「様」を付けた新しいリストを作ります
var politeNames = names.Select(name => name + "様");

foreach (var name in politeNames)
{
    Console.WriteLine(name);
}

実行結果:


田中様
佐藤様
鈴木様

「元のデータは変えずに、新しい形にして取り出す」というのがポイントです。 料理で例えるなら、ジャガイモ(元のデータ)を、皮をむいてカット(加工)してボウルに入れる作業に似ていますね。

6. 応用:複数の命令を組み合わせる

6. 応用:複数の命令を組み合わせる
6. 応用:複数の命令を組み合わせる

LINQの本当の凄さは、これらの命令を組み合わせて使える点にあります。 「絞り込み」をしてから「並べ替え」を行う、といった複雑な操作も、チェーンのように繋げるだけで完成します。


List<int> prices = new List<int> { 1500, 800, 2000, 300, 1200 };

// 1000円以上の商品だけを選んで、高い順に並べる
var filteredPrices = prices
    .Where(p => p >= 1000)
    .OrderByDescending(p => p);

foreach (var p in filteredPrices)
{
    Console.WriteLine(p + "円");
}

実行結果:


2000円
1500円
1200円

このように、処理が流れるように記述できるため、後からコードを見返したときも「何をしているか」が一目で分かります。 これを「メソッドチェーン」と呼びます。

7. よく使う便利なLINQ命令まとめ

7. よく使う便利なLINQ命令まとめ
7. よく使う便利なLINQ命令まとめ

LINQには他にもたくさんの便利な道具が入っています。初心者がまず覚えておくと得をするものを表にまとめました。

命令(メソッド名) 役割 例え話
First 最初の一つだけを取り出す 行列の先頭の人を呼ぶ
Count データの個数を数える カゴの中のリンゴを数える
Sum 合計値を計算する レジで合計金額を出す
Average 平均値を計算する テストの平均点を出す
Max / Min 最大値・最小値を探す クラスで一番背が高い人を探す

8. LINQを使うときの注意点

8. LINQを使うときの注意点
8. LINQを使うときの注意点

とても便利なLINQですが、初心者がハマりやすいポイントが一つあります。 それは、LINQの命令を書いただけでは、実際にはまだ「計算が始まっていない」ということです。

これを専門用語で「遅延実行」と言います。 実際に foreach で中身を見ようとした瞬間や、 ToList() (リストに変換する命令)を使った瞬間に、初めて計算が動き出します。 「注文書(LINQ)を書いただけで、料理(結果)はまだ出来上がっていない」という状態をイメージすると分かりやすいでしょう。

初心者が覚えておくべきコツ:

結果をすぐに確定させたいときは、最後に .ToList().ToArray() を付ける癖をつけておくと、後々のエラーを防ぎやすくなります。

9. パソコンを触ったことがない方へのメッセージ

9. パソコンを触ったことがない方へのメッセージ
9. パソコンを触ったことがない方へのメッセージ

ここまで読んでみて、「なんだか難しそう……」と感じたかもしれません。 でも安心してください。LINQは、私たちが日常的に行っている「探し物」や「整理整頓」を、コンピュータにお願いするための専用の言葉に過ぎません。

プログラミングの学習で大切なのは、最初からすべての仕組みを理解しようとしないことです。 まずは「Whereを使えば絞り込めるんだな」「OrderByで並べ替えができるんだな」という感覚を掴むだけで、あなたのプログラミングスキルは大きく前進します。

データクエリの世界は奥が深いですが、LINQを使いこなせるようになると、大量のデータを扱うアプリケーション(家計簿アプリや、名簿管理システム、在庫管理など)を驚くほど簡単に作れるようになります。 まずは、手元の小さなリストから、宝探しをするような気持ちでLINQを試してみてください。

関連記事:

関連記事なし

カテゴリの一覧へ
新着記事
New1
COBOL
COBOLのIDENTIFICATION DIVISIONを完全ガイド!初心者でも理解できる基本構造の書き方と使い方
New2
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
New3
COBOL
COBOLのACCEPT文の使い方を完全解説!初心者でもわかる基本的な入力方法
New4
COBOL
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド
No.2
Java&Spring記事人気No2
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.3
Java&Spring記事人気No3
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.4
Java&Spring記事人気No4
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.5
Java&Spring記事人気No5
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.6
Java&Spring記事人気No6
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.7
Java&Spring記事人気No7
COBOL
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.8
Java&Spring記事人気No8
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説