Pages

2013/02/20

[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
Related Posts Plugin for WordPress, Blogger...