我试图实现一个自定义比较器,用于比较两个字符串列表,并使用.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年后也遇到了同样的问题。 - T.S.