[英]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.