Я пытаюсь реализовать пользовательский сопоставитель в двух списках строк и использовать метод linux .Except(), чтобы получить те, которые не являются одним из списков. Причина, по которой я делаю пользовательский сопоставитель, заключается в том, что мне нужно выполнить «нечеткое» сравнение, т. Е. Одна строка в одном списке может быть встроена внутри строки в другой список.linq За исключением и пользовательских IEqualityComparer
Я сделал следующее компаратор
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(). Равно() никогда не прикасается. Есть идеи?
Для меня это было хорошее упражнение. В моем случае я ушел с 'public int GetHashCode (строка obj) {return obj.ToLower(). GetHashCode();}' Ваш вопрос старый, но я столкнулся с тем же вопросом 4 года спустя. –