相关疑难解决方法(0)

在c#中测试字典之间的相等性

假设字典键和值的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()));
}
Run Code Online (Sandbox Code Playgroud)

c# dictionary equality

56
推荐指数
3
解决办法
3万
查看次数

标签 统计

c# ×1

dictionary ×1

equality ×1