假设字典键和值的 equals 和 hash 方法实现正确,那么测试两个字典是否相等的最简洁有效的方法是什么?
在这个上下文中,如果两个字典包含相同的键集(顺序不重要) ,那么它们被认为是相等的,并且对于每个这样的键,它们在值上是一致的。
下面是我想到的一些方法(可能还有更多) :
public bool Compare1<TKey, TValue>(
Dictionary<TKey, TValue> dic1,
Dictionary<TKey,TValue> dic2)
{
return dic1.OrderBy(x => x.Key).
SequenceEqual(dic2.OrderBy(x => x.Key));
}
public bool Compare2<TKey, TValue>(
Dictionary<TKey, TValue> dic1,
Dictionary<TKey, TValue> dic2)
{
return (dic1.Count == dic2.Count &&
dic1.Intersect(dic2).Count().
Equals(dic1.Count));
}
public bool Compare3<TKey, TValue>(
Dictionary<TKey, TValue> dic1,
Dictionary<TKey, TValue> dic2)
{
return (dic1.Intersect(dic2).Count().
Equals(dic1.Union(dic2).Count()));
}