私がクラスを持っていると仮定します
public class Audio
{
public string artist { get; set; }
public string title { get; set; }
// etc.
}
ここで、類似性(完全一致ではない)条件によって、そのようなオーディオのリスト内の重複をフィルタリングしたいと思います。基本的には、弦の全長によるしきい値補正を使用したレーベンシュタイン距離です。問題は、IEqualityComparerに関する一般的なヒントは、「常にGetHashCodeとCompareの両方を実装する」ことです。GetHashCodeは比較メソッドではないため、明らかにGetHashCodeで文字列間の距離を計算することはできません。ただし、この場合、同様のオーディオでも異なるハッシュが返され、Distinct()はそれを異なるオブジェクトとして扱い、compare()メソッドは起動しません。
GetHashCodeが常に0を返すように強制しようとしたため、コレクション内の各オブジェクトに対してCompareが呼び出されましたが、これは低速です。それで、最後に、質問です。箱から出して.netでできることはありますか、それともフィルタリングのための優れたアルゴリズムを検索する必要がありますか?