【发布时间】:2010-03-25 03:59:59
【问题描述】:
我正在尝试在两个字符串列表上实现自定义比较器,并使用 .Except() linq 方法来获取不是列表之一的那些。我做一个自定义比较器的原因是因为我需要做一个“模糊”比较,即一个列表上的一个字符串可以嵌入另一个列表上的一个字符串中。
我做了以下比较器
public class ItemFuzzyMatchComparer : IEqualityComparer<string>
{
bool IEqualityComparer<string>.Equals(string x, string y)
{
return (x.Contains(y) || y.Contains(x));
}
int IEqualityComparer<string>.GetHashCode(string obj)
{
if (Object.ReferenceEquals(obj, null))
return 0;
return obj.GetHashCode();
}
}
当我调试时,唯一命中的断点是在 GetHashCode() 方法中。 Equals() 永远不会被触及。有什么想法吗?
【问题讨论】:
-
对我来说这是一个很好的练习。在我的情况下,我逃脱了
public int GetHashCode(string obj) {return obj.ToLower().GetHashCode();}你的问题很老,但我在 4 年后遇到了同样的问题。
标签: c# iequalitycomparer