我这有,但它是如此短暂,我几乎肯定我失去了一些东西:如何检查两个字典是否包含相同的值?
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},{ “真实的”,“真实的”,他们会是平等的。抱歉,模棱两可。 –