Sto cercando di implementare un operatore di confronto personalizzato su due liste di stringhe e utilizzare il metodo LINQ .Except() per ottenere quelli che non sono uno uno degli elenchi. La ragione per cui sto facendo un confronto personalizzato è perché ho bisogno di fare un confronto "fuzzy", cioè una stringa su una lista potrebbe essere incorporata all'interno di una stringa sull'altro elenco.LINQ Tranne e personalizzato IEqualityComparer
Ho fatto il seguente di confronto
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();
}
}
Quando il debug, l'unico punto di interruzione che colpisce è nel metodo GetHashCode(). The Equals() non viene mai toccato. Qualche idea?
Per me è stato un buon esercizio. Nel mio caso sono riuscito a ottenere 'public int GetHashCode (string obj) {return obj.ToLower(). GetHashCode();}' La tua domanda è vecchia ma ho avuto lo stesso problema 4 anni dopo. –