本文へスキップ
BecomeCoder

C#文法コース · 第5章 LINQ · レッスン42

First・Any・All と遅延実行

ブラウザで完結

導入

「条件に合う最初の1件」「1件でも該当するか」「全部が条件を満たすか」——これらを一発で判定するメソッドと、LINQを理解するうえで重要な遅延実行の考え方を学びます。

図解

flowchart TB
    D["Where などの定義"] -->|この時点では実行されない| Q["クエリ(設計図)"]
    Q -->|ToList / foreach / Count など| R["ここで初めて実行される"]
    style R fill:#fff3e0

サンプル

int[] numbers = { 3, 8, 1, 10, 5 };

// First / FirstOrDefault: 条件に合う最初の1件
Console.WriteLine(numbers.First(n => n > 4));          // 8
Console.WriteLine(numbers.FirstOrDefault(n => n > 100)); // 0(該当なしでも例外にならない)

// Any: 1件でも条件を満たすか(bool)
Console.WriteLine(numbers.Any(n => n > 9));   // True

// All: すべてが条件を満たすか(bool)
Console.WriteLine(numbers.All(n => n > 0));   // True

// 遅延実行: Where はこの行では「まだ実行されない」。ToList や foreach で実行される
var query = numbers.Where(n => n > 4);
Console.WriteLine(string.Join(", ", query.ToList()));  // ここで実行 → 8, 10, 5
  • First(条件)は最初の1件(該当なしは例外)、FirstOrDefaultは該当なしでも既定値を返す
  • Any(条件)は「1件でも該当するか」、All(条件)は「全件が該当するか」をboolで返す
  • 遅延実行: Where/Selectは定義した時点では動かず、ToList()/foreach/Count()などで初めて実行される

演習

string[] users = { "admin", "guest", "editor" };

// TODO: "admin" が含まれているかを Any で判定し、含まれていれば "管理者あり" と出力してください
___
  • 期待される出力: 管理者あり
ヒント1を見る

users.Any(u => u == "admin")

ヒント2を見る

if (users.Any(u => u == "admin")) Console.WriteLine("管理者あり");

まとめ

  • First/FirstOrDefaultで最初の1件、Any/Allで存在・全称の判定
  • LINQは遅延実行クエリは設計図で、ToList等で初めて動く
  • 「絞り込みを書き終えてから実行」を意識すると効率的

次回: ページング・重複除去・辞書化など、実務で効くLINQを一気に押さえます。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。