Ich habe eine Liste von Objekten, von denen einige die gleichen IDs haben, also möchte ich diese Elemente entfernen, die dupliziert werden.
Ich habe es mit so etwas versucht:
%Vor%Aber es funktioniert nicht!
Also habe ich diese Methode geschrieben, um die Duplikate zu vermeiden:
%Vor%Irgendwelche Ideen, wie man die Leistung verbessert?
Danke im Voraus.
Das ist schön und einfach:
%Vor%Aber wenn du es richtig schreiben willst, rate ich dir, es so zu schreiben:
%Vor%Es wird Ihnen mehr Freiheit geben, wenn es um zusätzliche Vergleiche geht. Nachdem Sie diese Klasse geschrieben haben, können Sie sie wie folgt verwenden:
%Vor%Ich denke, dass das Schreiben eines eigenen benutzerdefinierten Vergleichs ein guter Ansatz ist.
Hier ist ein Artikel in msdn, der das Thema sehr gut erklärt: Ссылка
Der Grund, dass Distinct nicht funktioniert, dass Distinct () keine Ahnung davon hat, wie man bestimmen kann, ob es Gleichheitszeichen gibt, also benutzt es die Referenz, um zu bestimmen, dass es dasselbe "Objekt" ist. Es funktioniert, als ob es funktioniert. Alle Klassen in der Abfrage sind nicht das gleiche Objekt.
Indem Sie Ihren eigenen Vergleicher schreiben (es ist einfach), können Sie Distinct () sagen, wie man die Vergleiche durchführt, um festzustellen, ob sie gleich sind.
Bearbeiten : Wenn Distinct nicht verwendet wird, ist das kein Problem und die Situation ist nicht freuent, die erste Antwort von Piotr Justyna ist einfach und effektiv.
Tags und Links .net c# entity-framework linq distinct