一個如何檢查是否在Dictionary <>存在鍵/值對存在一個鍵,值對?我可以使用ContainsKey
和ContainsValue
來檢查密鑰或值是否存在,但我不確定如何檢查密鑰/值對是否存在。如何檢查是否在Dictionary
感謝
一個如何檢查是否在Dictionary <>存在鍵/值對存在一個鍵,值對?我可以使用ContainsKey
和ContainsValue
來檢查密鑰或值是否存在,但我不確定如何檢查密鑰/值對是否存在。如何檢查是否在Dictionary
感謝
嘛對如果關鍵不存在......所以取與鍵關聯的值,並檢查是否這就是你要找的價值不能存在。因此,例如:
// Could be generic of course, but let's 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;
}
如何像這樣
bool exists = dict.ContainsKey("key") ? dict["key"] == "value" : false;
首先,你檢查鍵存在,如果是這樣,你得到的價值爲這個關鍵,並將其與正在測試......如果他們是平等的價值,你的字典包含對
字典只支持每一個鍵的值,因此:
// 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
}
我稍微不喜歡在一個表達式中設置和使用'found'。 – CodesInChaos 2012-03-11 17:43:37
@CodeInChaos爲什麼?行爲被明確定義爲永遠有效... – 2012-03-11 19:04:49
我知道它是很好的定義。這只是一種文體偏好。就像我試圖讓每個陳述只有一個副作用,這也是該陳述中發生的最後一件事情。 – CodesInChaos 2012-03-11 19:27:27
您可以通過使用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}
請下面的代碼
var dColList = new Dictionary<string, int>();
if (!dColList.Contains(new KeyValuePair<string, int>(col.Id,col.RowId)))
{}
感謝, 馬赫什摹
這會比其他選項慢很多,因爲您沒有利用字典功能快速查找關鍵字。 – Servy 2017-03-14 15:21:23
Jon Skeet的回答
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;
}
使用TryGetValue的一般版本而不是檢查。 – Marlon 2012-03-10 21:37:57
爲什麼查找兩次? – 2012-03-10 21:38:01