C # Generische Liste Union Frage

8

Ich versuche, zwei Listen mit "Union" zusammenzuführen, damit ich die Duplikate loswerde. Folgendes ist der Beispielcode:

%Vor%

Nun die Frage ist, kann ich Union verwenden und immer noch den Datensatz, der das späteste Datum hat (mit SomeDate-Eigenschaft). Der Datensatz selbst kann entweder in TempList1 oder TempList2 sein.

Vielen Dank im Voraus

    
Ganesha 11.05.2009, 19:03
quelle

6 Antworten

8

Die Operation, die für diesen Zweck wirklich geeignet ist, ist ein vollständiger äußerer Join . Die Enumerable -Klasse verfügt über eine Implementierung von inner join, die Sie verwenden können, um die Duplikate zu finden und auszuwählen, was Sie bevorzugen.

%Vor%

keySelector ist einfach eine Funktion (könnte ein Lambda-Ausdruck sein), die einen Schlüssel aus einem Objekt vom Typ SomeDetail extrahiert. Versuchen Sie jetzt, den vollständigen äußeren Join zu implementieren:

%Vor%

equalityComparer sollte ein Objekt sein, das IEqualityComparer<SomeDetail> implementiert und effektiv die Funktion keyComparer zum Testen der Gleichheit verwendet.

Lass es mich wissen, wenn das die Arbeit für dich erledigt.

    
Noldorin 11.05.2009, 19:13
quelle
1

Sie müßten Union sagen können, wie Sie auswählen sollen, welches der Duplikate verwendet werden soll. Ich weiß nicht, wie ich das anders machen könnte, als eine eigene Union zu schreiben.

    
John Weldon 11.05.2009 19:07
quelle
1

Sie können das nicht mit der Standardmethode Union , aber Sie können eine Erweiterungsmethode Union für List<SomeDetail> mit dieser speziellen Behandlung erstellen und diese Methode wird verwendet, weil die Signatur besser passt.

    
Daniel Brückner 11.05.2009 19:14
quelle
1

Warum nicht einfach HashSet & lt; T & gt; verwenden?

%Vor%     
Chris Doggett 12.05.2009 20:04
quelle
0

Generische Listen zusammenführen

%Vor%     
Michael D. Irizarry 23.02.2010 19:52
quelle
-1

versuche das:

%Vor%     
Adem Aygun 25.05.2015 12:24
quelle

Tags und Links