Mit c # 3 und .Net Framework 3.5 habe ich ein Person-Objekt
%Vor%und ich habe eine Liste von ihnen:
%Vor% Wie kann ich alle Personenobjekte in Personen erhalten, in denen SSN nicht eindeutig in der Liste ist, und sie aus der Personenliste entfernen und idealerweise zu einer anderen Liste namens " List<Person> dupes
" hinzufügen?
Die ursprüngliche Liste könnte etwa so aussehen:
%Vor%Und das Endergebnis hätte Cummings und Berra in der ursprünglichen Personenliste und hätte Columbus und Steinbeck in einer Liste namens Dupes.
Vielen Dank!
Danke an gcores für den richtigen Weg. Hier ist, was ich getan habe:
%Vor%Nun, wenn Sie IComparable wie folgt implementieren:
%Vor%Dann wird ein Vergleich wie der folgende funktionieren:
%Vor%Durchsuche die Liste und behalte eine Hashtabelle von SSN / Anzahl Paaren. Zählen Sie dann Ihre Tabelle auf und entfernen Sie die Elemente, die den SSNs entsprechen, für die SSN count & gt; 0.
%Vor% Muss persons
ein List<Person>
sein? Was wäre, wenn es ein Dictionary<int, Person>
wäre?
Wenn Sie mit eindeutigen Instanzen von Person
arbeiten (im Gegensatz zu verschiedenen Instanzen, die möglicherweise die gleichen Eigenschaften haben), erhalten Sie möglicherweise eine bessere Leistung mit HashSet
.
Basierend auf der obigen Empfehlung von @gcores.
Wenn Sie ein einzelnes Objekt des duplizierten SSN wieder zur Liste der Personen hinzufügen möchten, fügen Sie die folgende Zeile hinzu:
%Vor%Ich gehe hier davon aus, dass Sie möglicherweise nur doppelte Werte minus dem ursprünglichen Wert entfernen möchten, aus dem die Duplikate abgeleitet wurden.