導入
コレクションから「条件に合うものだけ」を取り出す——foreachとifで書けますが、LINQのWhereを使うと1行で、しかも「何をしたいか」がそのまま読める形で書けます。
図解
flowchart LR
IN["[3, 8, 1, 10, 5]"] --> W["Where(n => n >= 5)<br/>条件: 5以上"]
W --> OUT["[8, 10, 5]"]
style W fill:#e1f5fe
サンプル
int[] numbers = { 3, 8, 1, 10, 5 };
// Where: 条件(ラムダ式 n => ...)を満たす要素だけを残す
var big = numbers.Where(n => n >= 5);
foreach (int n in big)
Console.WriteLine(n);
// 8 / 10 / 5
Where(要素 => 条件)で条件に合う要素だけを取り出すn => n >= 5はラムダ式(「n を受け取り、n>=5 を返す」小さな関数)- 結果はまた列挙できるので
foreachで回せる
演習
string[] words = { "cat", "elephant", "dog", "giraffe", "ox" };
// TODO: Where を使って「4文字以上の単語」だけを1行ずつ出力してください
// (elephant / giraffe)
___
- 期待される出力:
elephantgiraffe(2行)
ヒント1を見る
文字数はw.Length。Where(w => w.Length >= 4)
ヒント2を見る
foreach (var w in words.Where(w => w.Length >= 4)) Console.WriteLine(w);
まとめ
Where(要素 => 条件)で条件に合う要素を絞り込む- ラムダ式
要素 => 条件で条件を表す - 「何を残すか」がそのまま読める
次回: 要素を別の形に変換するSelectです。