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
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.
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:
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.
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.
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.