Я пытаюсь реализовать собственный компаратор для двух списков строк и использовать метод .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 года спустя. - person T.S.   schedule 22.02.2014