Hallo,
ich habe zwei Listen.
Eine Liste mit allen Produktnummern und eine weitere mit nur ein paar Nummern.
Nun möchte ich gerne, wenn ich beide Listen miteinander vergleiche, dass ich nur die Werte aus der ersten Liste erhalten, welche NICHT in der zweiten Liste vorkommen.
List<Nummern> firstNotSecond = lstAlleNummern.Except(lstNummernzuordnung).ToList();
Wenn ich folgenden Code ausführe, erhalte ich jedoch weiterhin alle Werte; also auch alle, welche in der lstNummernzuordnung enthalten sind.
Ist meine Vorgehensweise falsch?
Ja, dazu musst Du nur in die Dokumentation schauen, wie das funktioniert.
Enumerable.Except Methode (System.Linq)
Except()
verwendet Equals() zur Gleichheitsbestimmung, und per default Unterscheiden sich Objekte anhand der Referenz.
Du willst aber keine Referenzen sondern Werte vergleichen, wozu Du IEquatable
implementieren musst.
Aber: steht alles in der Doku inkl. Beispielen - muss man einfach lesen 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
was ist Nummern
für ein Datentyp?
Du solltest dort Equals
und GetHashCode
implementieren, s.a. Beispiel in Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>).
PS: Hat dir mein Beitrag in BindingSource Filter weitergeholfen?
@Abt / @Th69 Danke für eure Hilfe! Hat nun geklappt!
@Th69 an der BindingList bin ich nun dran ...