導入
「条件に合う最初の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を一気に押さえます。