[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 で一部の図形だけ固定する