Suchen Sie Objektdubletten in Liste der Objekte

7

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!

    
Chris Conway 06.03.2009, 17:03
quelle

7 Antworten

19

Damit erhalten Sie die doppelte SSN:

%Vor%

Die duplizierte Liste wäre wie folgt:

%Vor%

Und dann iterieren Sie einfach über die Duplikate und entfernen Sie sie.

%Vor%     
gcores 06.03.2009, 17:13
quelle
2

Danke an gcores für den richtigen Weg. Hier ist, was ich getan habe:

%Vor%     
Chris Conway 06.03.2009 18:35
quelle
1
%Vor%     
Graeme Bradbury 06.03.2009 17:41
quelle
0

Nun, wenn Sie IComparable wie folgt implementieren:

%Vor%

Dann wird ein Vergleich wie der folgende funktionieren:

%Vor%     
Steven Evers 06.03.2009 17:11
quelle
0

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%     
Mike Marshall 06.03.2009 17:14
quelle
0

Muss persons ein List<Person> sein? Was wäre, wenn es ein Dictionary<int, Person> wäre?

%Vor%

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 .

    
user212218 11.04.2011 14:24
quelle
0

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.

    
Peter.Ombwa 24.05.2017 13:25
quelle

Tags und Links