【C#】LINQのContainsメソッドとAnyメソッドの違いと実践

LINQとは

LINQ、ラムダ式に関しては下記の記事を参考ください。

【C#】LINQ

2021.02.21

【C#】ラムダ式

2021.02.21

今回は、LINQのContainsメソッドとAnyメソッドの違いと使い方に関して解説していきます。

 

Containsメソッド

LinqのContainsメソッドは、指定した要素が配列の中に格納されているかどうかを調べます

メソッドの引数に指定した要素と一致する要素がある場合には true が、無い場合は false が返ります。

詳しい内容は、以下の記事を参考ください。

【C#】LinqのContainsメソッド

2021.04.16

 

Anyメソッド

LinqのAnyメソッドは、シーケンス(配列やリスト)の要素が存在するか、または条件を満たすかどうかを判断します

メソッドの引数に指定した要素と一致する要素がある場合には true が、無い場合は false が返ります。

詳しい内容は、以下の記事を参考ください。

【C#】LinqのAnyメソッド

2021.05.27

 

ContainsメソッドとAnyメソッドの違い

ContainsメソッドとAnyメソッドの違いは以下になります。

メソッド名 説明
Contains  

要素の存在を確認する場合

ラムダ式で条件を記述する必要がない

Any  

特定の条件を満たす要素があるか調べる場合

ラムダ式を使って条件を記述する

詳しくは、上述した記事を参考ください。

 

ContainsメソッドとAnyメソッドの実践

foreach文で配列やリストの要素を取得してif文で条件分岐させる際、ContainsメソッドもしくはAnyメソッドを使用することにより、foreach文を省略することもできます。

foreach文のサンプルコード

using System;

namespace c_linq_contains_any
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] members = { "konan", "ai", "mitsuhiko", "ayumi", "genta" };

            foreach (string member in members)
            {
                if (member.Length == 2)
                {
                    Console.WriteLine("aiちゃんが呼ばれました");
                }
            }
        }
    }
}

実行結果:

aiちゃんが呼ばれました。

上記のような処理があった際、同様の処理をContainsメソッドとAnyメソッドでも記述することができます。

 

Containsメソッドでif文を省略するサンプルコード

using System;
using System.Linq;

namespace c_linq_contains_any
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] members = { "konan", "ai", "mitsuhiko", "ayumi", "genta" };

            if (members.Contains("ai")) // Containsメソッドを用いることによりforeach文を省略できる。
            {
                Console.WriteLine("aiちゃんが呼ばれました。");
            }
            
        }
    }
}

実行結果:

aiちゃんが呼ばれました。

 

Anyメソッドでif文を省略するサンプルコード

using System;
using System.Linq;

namespace c_linq_contains_any
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] members = { "konan", "ai", "mitsuhiko", "ayumi", "genta" };

            if (members.Any(x => x.Length == 2)) // Anyメソッドを用いることでforeach文を省略できる。
            {
                Console.WriteLine("aiちゃんが呼ばれました。");
            }
        }
    }
}

実行結果:

aiちゃんが呼ばれました。

上記のように、foreach文を使用した場合と同様の結果を得ることができます。

このような使用方法は、実際の開発現場でも用いられることが多いです。

 

おすすめ・参考書籍

■C#を学習し始めた方向け
やさしいC 第3版 (「やさしい」シリーズ)

1週間でCの基礎が学べる本

確かな力が身につくC「超」入門 第2版 (Informatics&IDEA)

■C#をある程度学習した方向け
基礎からしっかり学ぶCの教科書 改訂新版 (マイクロソフト関連書)

独習C 新版

Effective C 6.0/7.0