Ich habe zwei Produktlisten: Produkte und extraProducts Mein Ziel ist es, die 2 Listen zusammenzuführen, aber Duplikate nur basierend auf der ID zu vermeiden.2 Listen mit linq basierend auf eindeutiger ID zu vermischen, um Duplikate zu vermeiden
Hier ist mein bester Versuch:
List<Product> allProductsWithNoDuplicates = new List<Product>();
allProductsWithNoDuplicates.AddRange(products.Where(p => extraProducts.Select(ep => ep.Id).Contains(p.Id)).ToList());
aber es funktioniert nicht, weil es sein muss, wo nicht enthält.
Ich bin bewusst, dass ich dies tun können, aber da Id ist das einzige, was ich verwende, um zu vergleichen, gibt es einen anderen Weg? Ich fühle mich einfach wie IEqualityComparer in diesem Fall ist Overkill. –
Ich verstehe, dass es etwas zu viel ist, eine Klasse dafür zu machen, eine einfache Funktion wäre genug. Aber die Verwendung eines 'Where' kombiniert mit' Contains' macht die Komplexität größer und macht den Algorithmus langsamer. – Marnix
Also habe ich beschlossen, IEqualityComparer auf meinem Produkt-Objekt zu implementieren, genau wie die Dokumentation, die Sie mir gegeben haben. Dies liegt daran, dass ich erkannt habe, dass ich mehr als nur die ID überprüfen muss, um sie zu vergleichen. Nun, da dies getan ist, wie verwende ich Union? –