[C#] List の Contains とラムダ式による検索

List の中にある値が含まれているかどうかというチェックに関しては、
List の Contains を使えば良い。

しかし、ある値に List に定義された値が含まれているか、という逆のチェックは
List(T).Contains メソッドではチェックできない (そもそも期待する結果にならない)。

これを実現するには、foreach 等でリストを回してチェックすることを思いつくのだが、
ラムダなら 1 行で済む。
 var input = " I'd like to have some orange juice.";
 var fruits = new List { "apple", "orange", "banana", };

 var result1 = fruits.Contains(input);
 Debug.WriteLine(result1);

 var result2 = fruits.Exists(w => input.Contains(w));
 Debug.WriteLine(result2);

 var result3 = false;
 foreach (var x in fruits)
 {
     if (input.Contains(x))
     {
         result3 = true;
         break;
     }
 }
 Debug.WriteLine(result3);

 // 結果
 // result1 = false
 // result2 = true
 // result3 = true

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

コピーした行の挿入が表示されない時はフィルタされていないかチェック