I would suggest (above all) not to use Distinct or GetHashCode .
GetHashCode is too strict for your business (as @Gabe notes). What can you do:
- Suppose you have to compare the entire complexity of a triangle (O (n ^ 2)) of pairs of instances using the Levenshtein method
- , : Levenshtein ( Audio , , )?
( ) darn good GetHashCode.
GetHashCode, :
bool AreSimilar(Audio me, Audio you) {
int cheapLevenshtein = Math.Abs(me.AbsoluteQuasiLevenshtein - you.AbsoluteQuasiLevenshtein);
if (cheapLevenshtein < THRESHOLD) {
int expensiveLevenshtein = Audio.LevenshteinBetween(me, you);
var result = (expensiveLevenshtein < LIMIT);
return result;
} else
return false;
}
. , : Distinct(). , , .
AbsoluteQuasiLevenshtein , : "ab" "zy", "ab" "blahblahblahblah" , , , ( GetHashCode + - GetHashCode).