为List <dictionary <string,string>&gt;正确实现IEqualityComparer的实现

时间:2016-08-11 13:55:54

标签: c# .net dictionary

我有两个代表两个表的BONUSPACK: Invalid response from server: HTTP/1.1 403 Forbidden 。我想获得那些表中不同的Dictionary对象。

我正在尝试使用Except方法,因为它基本上是我想要的:它返回差异。但是因为这个方法使用默认比较器,所以我创建了自己的IEqualityComparer实现。

在下面的示例中,它工作得很好,但在现实生活中,字典要复杂得多,所以我想知道 - 我的实现是一个很好的解决方案还是必须加强?

List<Dictionary<string,string>>

1 个答案:

答案 0 :(得分:-1)

我认为会有一些更清洁的解决方案:

public class DictionaryComparer : IEqualityComparer<KeyValuePair<string, string>>
{
    public bool Equals(KeyValuePair<string, string> x, KeyValuePair<string, string> y)
    {
        return x.Key.Equals(y.Key) 
            && x.Value.Equals(y.Value);
    }

    public int GetHashCode(KeyValuePair<string, string> obj)
    {
        return string.Concat(obj.Key, obj.Value)
            .GetHashCode();
    }
}