カテゴリ: C# 更新日: 2026/03/10

C#のLINQでAny・Allを使った条件確認を完全解説!初心者でもわかるサンプル付き

C#のLINQでAny・Allなど条件確認メソッドの使い方
C#のLINQでAny・Allなど条件確認メソッドの使い方

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

生徒

「C#のLINQで、リストの中に特定の条件を満たす要素があるかどうかを調べたいんですが、どうすればいいですか?」

先生

「そんなときに便利なのが、AnyAllというメソッドです。条件の確認がとても簡単にできますよ。」

生徒

「名前だけだとちょっと分かりにくいですね…。どんなときに使うんですか?」

先生

「では、日常生活の例えと一緒に、実際のC#コードを見ながら学んでみましょう!」

1. Anyメソッドとは?存在チェックの基本をマスター

1. Anyメソッドとは?存在チェックの基本をマスター
1. Anyメソッドとは?存在チェックの基本をマスター

C#のLINQ(リンク)で非常によく使われるAnyメソッドは、「データの中に条件に合うものが、一つでも含まれているか?」を判定するための機能です。プログラミングに慣れていない方は、「YESかNOかで答えられる質問をデータに投げかけている」とイメージすると分かりやすいでしょう。

例えば、果物のリストがあったときに「この中に『りんご』は入っているかな?」と確認したり、数値のリストで「マイナスの数字が一つでも混ざっていないかな?」とチェックしたりする際に大活躍します。「一つでも見つかれば即座にtrue(正)」を返し、最後まで一つも見つからなければfalse(偽)を返します。

ポイント: Anyは「全部」を調べる必要がない場合(一つ見つけた時点で終了できる場合)に非常に効率的な動きをします。

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

class Program
{
    static void Main()
    {
        // 5人のテスト結果のリストを作成します
        List<int> scores = new List<int> { 80, 92, 67, 100, 58 };

        // 「60点未満(赤点)の人は、一人でもいるかな?」とAnyで確認
        // score => score < 60 は「中身が60より小さいか」という条件です
        bool hasFailed = scores.Any(score => score < 60);

        // 結果を表示します
        Console.WriteLine("赤点の人はいる?:" + hasFailed);
    }
}

このプログラムを実行すると、次のような結果になります。


赤点の人はいる?:True

リストの中をよく見ると「58」という数値が入っていますね。これが「60点未満」という条件に一致したため、Anyメソッドは「はい、一人(以上)見つかりました!」という意味でTrueという答えを返してくれたのです。

もしリストの中身がすべて60点以上だった場合は、一致するものが一つも存在しないため、結果はFalseに変わります。このように、大量のデータの中から特定の条件を探し出す手間を、Anyならたった1行で解決してくれます。

2. Allメソッドとは?

2. Allメソッドとは?
2. Allメソッドとは?

Allメソッドは、コレクションのすべての要素が条件を満たしているかを確認するときに使います。例えば、「全員が出席しているか」を調べるイメージです。

ポイントは、条件を一つでも満たさない要素があればfalseを返すことです。


using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> scores = new List<int> { 80, 92, 67, 100, 58 };

        bool allPassed = scores.All(score => score >= 60);

        Console.WriteLine(allPassed);
    }
}

この例では「全員が60点以上か」を確認しています。


False

結果はFalseとなりました。なぜなら、58点という60点未満のスコアが含まれているからです。

3. AnyとAllの違いを日常例で理解する

3. AnyとAllの違いを日常例で理解する
3. AnyとAllの違いを日常例で理解する

初心者の方には、AnyAllの違いが混乱しやすいポイントです。ここで日常生活の例に置き換えてみましょう。

  • Any:「クラスの中に、遅刻した人はいる?」→ 1人でもいればYes。
  • All:「クラス全員が宿題を提出した?」→ 1人でも出していなければNo。

つまり、Anyは「一人でもいるか?」、Allは「全員そうか?」という感覚で覚えると理解しやすいです。

4. 空のコレクションに対する挙動

4. 空のコレクションに対する挙動
4. 空のコレクションに対する挙動

少し応用的なポイントとして、リストが空の場合にどうなるかを確認しておきましょう。

  • Anyは、空のコレクションに対しては必ずfalseを返します。
  • Allは、空のコレクションに対してはtrueを返します。(数学的に「全ての要素が条件を満たす」とみなされるためです)

List<int> emptyList = new List<int>();

Console.WriteLine(emptyList.Any(x => x > 0)); // False
Console.WriteLine(emptyList.All(x => x > 0)); // True

この動作は一見不思議ですが、LINQの仕様として覚えておくと安心です。

5. Any・Allを使うメリット

5. Any・Allを使うメリット
5. Any・Allを使うメリット

プログラム初心者がつまずきやすいのが「ループで条件を探す処理」です。もしAnyAllを使わないと、次のように自分でforeachループを書いて確認する必要があります。


bool hasFailed = false;
foreach (var score in scores)
{
    if (score < 60)
    {
        hasFailed = true;
        break;
    }
}

この処理も正しく動きますが、Anyを使えば一行で書けてとてもスッキリします。


bool hasFailed = scores.Any(score => score < 60);

コードが短くなることで可読性が上がり、エラーも減りやすくなります。

6. まとめとしての理解ポイント

6. まとめとしての理解ポイント
6. まとめとしての理解ポイント

ここまでで、C#のLINQにおけるAnyAllの基本的な使い方や違いを学びました。特にプログラミング初心者にとっては、「条件確認を簡単にできる便利な道具」として覚えると役立ちます。

  • Any:一つでも条件に合えばtrue
  • All:全て条件に合えばtrue
  • 空のリストの場合は、Any=falseAll=true

実際に自分のパソコンでコードを実行しながら確認してみると、理解が一層深まるでしょう。

まとめ

まとめ
まとめ

C#のLINQには、リストや配列などのコレクションに対して「条件に合う要素があるか」「すべての要素が条件を満たしているか」を確認する便利なメソッドが用意されています。それが今回学んだAnyAllです。

Anyメソッドは、「1つでも条件を満たす要素があればtrueを返す」仕組みで、例えば「80点未満の点数があるか」や「空欄の回答があるか」など、一部でも条件に当てはまるかをチェックする場面で活躍します。一方で、Allメソッドは「全ての要素が条件を満たしているか」を確認できるため、「すべての入力が正しい形式か」「全員が合格点を取っているか」など、完全に揃っているかのチェックに便利です。

実際の業務やアプリ開発でも、ユーザー入力のバリデーションやデータの一括確認処理など、条件に基づいた処理は頻繁に登場します。そんなときにAnyAllを知っていれば、コードを短く、明確に、読みやすく書くことができます。

以下に、実践的な例を紹介します。入力されたメールアドレスの一覧から「すべてが有効な形式か」「ひとつでも無効なものがあるか」を確認するサンプルです。

メールアドレスの一括チェックにAnyとAllを使う


using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<string> emails = new List<string>
        {
            "test@example.com",
            "user@domain.com",
            "invalid_email",
            "admin@mail.com"
        };

        bool hasInvalid = emails.Any(e => !e.Contains("@"));
        bool allValid = emails.All(e => e.Contains("@"));

        Console.WriteLine("無効なメールが含まれているか: " + hasInvalid);
        Console.WriteLine("すべてのメールが有効か: " + allValid);
    }
}

このサンプルでは、Contains("@")を使って簡易的にメールアドレス形式かどうかを判定しています。本格的には正規表現を使ったチェックが推奨されますが、AnyAllの使い方を学ぶには十分な例です。

出力は次のようになります。


無効なメールが含まれているか: True
すべてのメールが有効か: False

このように、両方のメソッドを組み合わせて使うことで、信頼性の高いデータチェックが実現できます。

また、空のリストに対する挙動(AnyはfalseAllはtrue)も、バグを防ぐためにしっかり覚えておきたいポイントです。条件付きでチェックする場面では特に注意しましょう。

先生と生徒の振り返り会話

生徒

「AnyとAllって、名前だけじゃ分かりにくかったけど、実際に使ってみるとすごく便利ですね!」

先生

「そうなんです。条件に一致する要素が『あるか』『すべてか』という2つの視点を整理できるのがLINQの強みですよ。」

生徒

「リストが空でもAllがtrueになるのはちょっと不思議でした。でも、数学的にはそう考えるっていうのが面白いですね。」

先生

「確かに直感的には逆に思えますが、論理的に考えると理にかなっています。これを知っておくと、不具合を防ぐ助けになりますよ。」

生徒

「あと、foreachで書いてた処理がAnyやAllを使うと1行になるのも感動でした!コードが読みやすくなりますね!」

先生

「コードの簡潔さは保守性にもつながりますから、現場でも重宝される考え方ですよ。これからもLINQをどんどん活用していきましょう!」

カテゴリの一覧へ
新着記事
New1
C#
C#で条件分岐をネストする方法!入れ子構造の書き方を基礎から学ぼう
New2
COBOL
COBOLの文字列検索を完全ガイド!初心者でもわかるINSPECTとUNSTRINGの使い方
New3
C#
C#でXMLバリデーションを完全マスター!XSDスキーマを使ったチェック方法を初心者向けに解説
New4
COBOL
COBOLのEDITING記述子を完全解説!初心者でもわかるPIC Z・\*・\$による整形出力
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.3
Java&Spring記事人気No3
C#
C#のstaticクラスとstaticメソッドの基本と使い方をやさしく解説!
No.4
Java&Spring記事人気No4
C#
C#のLINQでFirstとFirstOrDefaultの違いと使い方を完全解説!初心者向けガイド
No.5
Java&Spring記事人気No5
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.6
Java&Spring記事人気No6
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.7
Java&Spring記事人気No7
C#
C#の文字列を数値に変換する方法(int.Parse・TryParse)をわかりやすく解説!
No.8
Java&Spring記事人気No8
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法