我這有,但它是如此短暫,我幾乎肯定我失去了一些東西:如何檢查兩個字典是否包含相同的值?
public static bool ValueEquals<TKey, TValue>
(this IDictionary<TKey, TValue> source, IDictionary<TKey, TValue> toCheck)
{
if (object.ReferenceEquals(source, toCheck))
return true;
if (source == null || toCheck == null || source.Count != toCheck.Count)
return false;
return source.OrderBy(t => t.Key).SequenceEqual(toCheck.OrderBy(t => t.Key));
}
所以基本上,如果他們有一個平等的引用,返回true
。如果它們中的任何一個是null
或者它們的計數不同,則返回false
。然後返回,如果序列(按鍵,然後它們的值排序)是相同的。我必須缺少的東西,因爲它太短,不夠好。
對不起!我不小心按下了輸入!它尚未完成! –
只是爲了澄清,你想要相同的值*爲相同的鍵*? (你的問題標題只提及值,這是不同的。) –
@JonSkeet我的意思是一般意義上的值,而不是'Dictionary'的價值意義。所以如果我有兩個'string'和'bool'字典,它們是'{「true」,true},{「false」,false},另一個是'{「false」,false},{ 「真實的」,「真實的」,他們會是平等的。抱歉,模棱兩可。 –