Tôi đang cố gắng triển khai trình so sánh tùy chỉnh trên hai danh sách chuỗi và sử dụng phương thức linq .Except() để lấy những thứ không phải là một trong các danh sách. Lý do tôi làm một so sánh tùy chỉnh là vì tôi cần phải so sánh "mờ", nghĩa là một chuỗi trên một danh sách có thể được nhúng bên trong một chuỗi trên danh sách khác.linq Ngoại trừ và tùy chỉnh IEqualityComparer
tôi đã thực hiện các Comparer sau
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();
}
}
Khi tôi gỡ lỗi, breakpoint duy nhất mà lượt truy cập là trong phương thức GetHashCode(). The Equals() không bao giờ bị xúc động. Bất kỳ ý tưởng?
Với tôi đó là một bài tập tốt. Trong trường hợp của tôi, tôi đã lấy đi 'public int GetHashCode (string obj) {return obj.ToLower(). GetHashCode();}' Câu hỏi của bạn là cũ nhưng tôi đã gặp phải vấn đề tương tự 4 năm sau đó. –