繁体   English   中英

不同的IEqualityComparer <>问题

[英]Distinct IEqualityComparer<> problems

大家好我不知道为什么它不工作需要一些帮助。 我有一个列表与链接和一些数据,我希望通过链接主机列出这里的代码

    public class DataContainerEqualityComparer : IEqualityComparer<DataContainer>
        {
            public bool Equals(DataContainer x, DataContainer y)
            {
                return x.Url.Host == y.Url.Host;
            }

            public int GetHashCode(DataContainer obj)
            {
                return obj.Url.GetHashCode();
            }
        }

List<DataContainer> items = new List<DataContainer>();
var item = new DataContainer("http://google.com/123");
items.Add(item);
item = new DataContainer("http://google.com/1234");
items.Add(item);
item = new DataContainer("http://google.com/12345");
items.Add(item);
item = new DataContainer("http://google.com/123456");
items.Add(item);
item = new DataContainer("http://google.com/1234567");
items.Add(item);                
items = items.Distinct(new DataContainerEqualityComparer()).ToList();

在此之后没有任何反应 Thx提前。

您实现DataContainerEqualityComparer的问题是您要返回Url的哈希码而不是Host的哈希码。

将其更改为此,它应该按预期工作:

public int GetHashCode(DataContainer obj)
{
    return obj.Url.Host.GetHashCode();
}

检查两个对象是否相等时,会发生以下情况:

首先,在两个对象上调用GetHashCode 如果哈希码不同,则认为对象不相等,并且从不调用 Equals
仅当GetHashCode为两个对象返回相同的值时才调用Equals

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM