2016-11-13 7 views
2

, если я хочу использовать словарь с заданными значениями для условного сравнения в if-statement для передачи реализации, но избегайте if-statement для перечисления этих значений и получения его из словаря. Так как проверить словарь, который содержит 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:

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

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

Здравствуйте, я немного запутался, я точно то же, что вы показываете в своем ответе в моем примере, я прав? кроме второго, но я тоже пробовал это. Иногда он не существует –

+0

@DefColin Первая часть моего ответа заключается в использовании 'ContainsValue' вместо' ContainsKey' – Jim

+0

@DefColin. Правильно. Если вы знаете конкретный ключ, вы можете искать ключ и извлекать его значение. Но тогда вам нужно знать ключ ofc. Но, полагаю, это другой вопрос. – Jim

0

Вы можете использовать ValuesCollection словаря, чтобы упростить код:

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

привет, тоже ответ. –

Смежные вопросы