Как проверить, существует ли пара слов/значений в словаре < > ? Я могу проверить, существует ли ключ или значение, используя ContainsKey
и ContainsValue
, но я не уверен, как проверить, существует ли пара ключей/значений.
Спасибо
Как проверить, существует ли пара слов/значений в словаре < > ? Я могу проверить, существует ли ключ или значение, используя ContainsKey
и ContainsValue
, но я не уверен, как проверить, существует ли пара ключей/значений.
Спасибо
Хорошо, что пара не может существовать, если ключ не существует... поэтому выберите значение, связанное с ключом, и проверьте, было ли это значение, которое вы искали. Так, например:
// Could be generic of course, but let keep things simple...
public bool ContainsKeyValue(Dictionary<string, int> dictionary,
string expectedKey, int expectedValue)
{
int actualValue;
if (!dictionary.TryGetValue(expectedKey, out actualValue))
{
return false;
}
return actualValue == expectedValue;
}
Или немного более "умно" (обычно что-то избегать...):
public bool ContainsKeyValue(Dictionary<string, int> dictionary,
string expectedKey, int expectedValue)
{
int actualValue;
return dictionary.TryGetValue(expectedKey, out actualValue) &&
actualValue == expectedValue;
}
Словарь поддерживает только одно значение для каждой клавиши, поэтому:
// key = the key you are looking for
// value = the value you are looking for
YourValueType found;
if(dictionary.TryGetValue(key, out found) && found == value) {
// key/value pair exists
}
if (myDic.ContainsKey(testKey) && myDic[testKey].Equals(testValue))
return true;
Вы можете сделать это, используя dictionary.TryGetValue.
Dictionary<string, bool> clients = new Dictionary<string, bool>();
clients.Add("abc", true);
clients.Add("abc2", true);
clients.Add("abc3", false);
clients.Add("abc4", true);
bool isValid = false;
if (clients.TryGetValue("abc3", out isValid)==false||isValid == false)
{
Console.WriteLine(isValid);
}
else
{
Console.WriteLine(isValid);
}
В приведенном выше коде, если условие есть два раздела, первый для проверки ключа имеет значение, а второй - для сравнения фактического значения с вашим ожидаемым значением.
First Section{clients.TryGetValue("abc3", out isValid)==false}||Second Section{isValid == false}
Как-то вроде этого
bool exists = dict.ContainsKey("key") ? dict["key"] == "value" : false;
Общая версия Jon Skeet answer
public bool ContainsKeyValue<TKey, TVal>(Dictionary<TKey, TVal> dictionnaire,
TKey expectedKey,
TVal expectedValue) where TVal : IComparable
{
TVal actualValue;
if (!dictionnaire.TryGetValue(expectedKey, out actualValue))
{
return false;
}
return actualValue.CompareTo(expectedValue) == 0;
}
Сначала вы проверяете, существует ли ключ, если это так, вы получаете значение для этого ключа и сравниваете его со значением, которое вы тестируете... Если они равны, ваш словарь содержит пару
Пожалуйста, ознакомьтесь со следующим кодом
var dColList = new Dictionary<string, int>();
if (!dColList.Contains(new KeyValuePair<string, int>(col.Id,col.RowId)))
{}
Спасибо, Махеш G