Ich versuche, einen benutzerdefinierten IequalityComparer mit Differenz () zu verwenden, um doppelte Elemente basierend auf einem komplexen Zustand zu entfernen, aber es scheint nicht wie erwartet zu funktionieren. Hier ist, was ich getan habe: < /p>
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ProductComparer : IEqualityComparer
{
public bool Equals(Product x, Product y)
{
return x.Name.ToLower() == y.Name.ToLower();
}
public int GetHashCode(Product obj)
{
return obj.Name.ToLower().GetHashCode();
}
}
var products = new List
{
new Product { Id = 1, Name = "Apple" },
new Product { Id = 2, Name = "apple" },
new Product { Id = 3, Name = "Banana" }
};
var distinctProducts = products.Distinct(new ProductComparer()).ToList();
< /code>
Obwohl die Namen "Apple" und "Apple" nur für den Fall unterscheiden, sind beide Elemente im Ergebnis immer noch vorhanden. Was fehlt mir in meiner Implementierung von IequalityCompare und wie kann ich einen ordnungsgemäßen nichtempfindlichen Vergleich sicherstellen?
Warum wird meine Linq -Abfrage bei Verwendung eines benutzerdefinierten iEqualityComparer nicht korrekt filtert? ⇐ C#
-
- Similar Topics
- Replies
- Views
- Last post