スポンサーリンク

【C#】Containsを使ってリストの要素に特定の値が入っているか確認する方法

C#でContainsメソッドを用いて、リストの中に特定の値が入っているかを確認する方法です。

スポンサーリンク

Containsメソッドを使って確認する

リストの要素が大量にある場合、リストの中に特定の文字列が含まれているかを確認する場合、Containsメソッドを使うと便利です。構文はこれだけです。

リスト変数.Contains("検索したい文字列")

戻り値はbool型なのでTrueかFalseで返って来ます。使い方としては、if文の条件式に入れるか、戻り値を変数に代入するかになります。

ただし、注意して欲しいことが1点。
Containsメソッドの場合、要素の値と検索値が完全一致する場合に限定されます。
検索条件が部分一致していてもFalseで返って来ます。

サンプルで次の画面を作りました。

超絶簡単なもので、

  1. 上のテキストボックスに検索したい文字列を入力
  2. 実行ボタンをクリックする
  3. 下のテキストボックスに結果とリストの要素が表示される

という仕様です。

スポンサーリンク

サンプルコード

サンプルコードです。ブランクチェックを入れてます。

private void cmdContains_Click(object sender, EventArgs e)
{
    //リスト生成
    List strList = new List();
    strList.Add("Sunday");
    strList.Add("Monday");
    strList.Add("Tuesday");
    strList.Add("Wednesday");
    strList.Add("Thursday");
    strList.Add("Friday");
    strList.Add("Saturday");

    //テキストボックスの検索文字列を変数に代入
    string strSearch = txtSearch.Text;

    //検索する文字列のブランクチェック
    if (string.IsNullOrEmpty(strSearch))
    {
        txtResult.Text = "(検索する文字列が入って)ないです。";
    }

    //文字列がリストにあるか検索
    if (strList.Contains(strSearch))
    {
        txtResult.Text = "(リストに)ありますねえ!" + Environment.NewLine;

        //対象の要素をテキストボックスに表示
        foreach (string strTemp in strList)
        {
            if(strTemp == strSearch)
            {
                txtResult.Text = txtResult.Text + strTemp + Environment.NewLine;
            }
        }
    }
    else
    {
        txtResult.Text = "(リスト)ないです。";
    }
}

String型のリスト strList には、英語の曜日を格納しています。これを実行してみましょう。

この記事を書いている時は水曜日なので、上のテキストボックスに「Wednesday」を入力して検索してみます。

この状態でクリックすると…

結果が表示されました。「Wednesday」は含まれていますね。

今度は、リストに入っていない「Holiday」を検索してみます。

リスト内にありませんね。

そして、Containsメソッドは完全一致の時にTrueを返すので、部分一致となるキーワードを入れて検索してもヒットしません。例えば、英語の曜日の全てに入っている「day」で検索してみます。

見事にヒットしませんでした。

スポンサーリンク

参考サイト

List<T>.Contains(T) メソッド (System.Collections.Generic)

スポンサーリンク

鉄道記事も書いてます!

ちょっとリフレッシュして鉄道記事も読んでみませんか?

鉄道記事バックナンバーはこちら↓

鉄道コム投稿記事一覧ページ