2016-11-13 11 views
2

if-statementの条件付き比較に所定の値を持つ辞書を使用して実装を渡しますが、この値のリストをif文で避けて辞書から取得します。だから、文字列値が存在する場合、400個の文字列が含まれている辞書を、確認する方法:条件付き比較の文字列値が存在するかどうかを確認する方法

Dictionary<int, string> set1 = new Dictionary<int, string>() 
           {{ 1, "string1" }, { 2, "string2" } ... }; // 400 values 

ので、この方法が間違っているように思える:

string str = "string1"; 

    if (set1.ContainsKey(str) == true) 
    { 
     Console.WriteLine("Contains"); 
    } 
    else 
    { 
     Console.WriteLine("Does Not Contains"); 
    } 

はさらに条件

答えて

1

のcontainsValueのために結果を取得するには(値);

string str = "string1"; 

if (set1.ContainsValue(str) == true) 
{ 
    Console.WriteLine("Contains"); 
} 
else 
{ 
    Console.WriteLine("Does Not Contains"); 
} 

またはLINQを持つ:あなたはあなたのコードを簡素化するために、辞書のValuesCollectionを使用することができます

using System.Linq; 
... 
string str = "string1"; 

if (set1.Values.Any(x => x == str)) 
{ 
    Console.WriteLine("Contains"); 
} 
else 
{ 
    Console.WriteLine("Does Not Contains"); 
} 
+0

こんにちは、私は正確に行うには、少し混乱しています私の例であなたの答えに示されているのと同じですが、私は正しいのですか? 2番目のものを除いて、私もこの方法を試しました。時々見つからない –

+0

@DefColin私の答えの最初の部分は、 'ContainsKey'の代わりに' ContainsValue'を使用しています – Jim

+0

@DefColinそれは正しいです。特定のキーが分かっている場合は、そのキーを検索して値を取得できます。しかし、あなたは鍵の鍵を知る必要があります。しかし、私は別の質問だと思います。 – Jim

0

Dictionary<int, string> set1 = new Dictionary<int, string>() 
          {{ 1, "string1" }, { 2, "string2" }}; 

    var valuesCollection = set1.Values; 
    var str = "string1"; 
    Console.WriteLine(valuesCollection.FirstOrDefault(v => v == str) != null ? "Contains" : " Not contains"); 
+0

こんにちは、また答えてください。 –

関連する問題