C#でContainsメソッドを用いて、リストの中に特定の値が入っているかを確認する方法です。
Containsメソッドを使って確認する
リストの要素が大量にある場合、リストの中に特定の文字列が含まれているかを確認する場合、Containsメソッドを使うと便利です。構文はこれだけです。
リスト変数.Contains("検索したい文字列")
戻り値はbool型なのでTrueかFalseで返って来ます。使い方としては、if文の条件式に入れるか、戻り値を変数に代入するかになります。
サンプルで次の画面を作りました。
超絶簡単なもので、
- 上のテキストボックスに検索したい文字列を入力
- 実行ボタンをクリックする
- 下のテキストボックスに結果とリストの要素が表示される
という仕様です。
サンプルコード
サンプルコードです。ブランクチェックを入れてます。
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)
関連記事
【C#】enumの超基本的な使い方(列挙型)
C#におけるenum(列挙型)の基本的な使い方です。
.