假设我有一堂课
public class Audio
{
public string artist { get; set; }
public string title { get; set; }
// etc.
}
现在我想通过相似性(不是完全匹配)条件过滤此类音频列表中的重复项。基本上它是列文斯坦距离,按字符串总长度进行阈值校正。问题是,关于 IEqualityComparer 的一般提示是“始终同时实现 GetHashCode 和 Compare”。我显然无法计算 GetHashCode 中字符串之间的距离,因为它根本不是比较方法。然而,在这种情况下,即使是相似的音频也会返回不同的哈希值,并且 Distinct() 会将其视为不同的对象,并且不会触发 compare() 方法。
我试图强制 GetHashCode 始终返回 0,因此对集合中的每个对象都调用了 Compare,但这很慢。所以,最后,一个问题:我可以用 .net 做些什么,或者我应该搜索一些好的过滤算法吗?