Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 24681|Antwort: 1

[Quelle] C# Distinct dedupliziert bedingt Objekte

[Link kopieren]
Veröffentlicht am 17.08.2018 10:56:00 | | | |
Üblicherweise verwenden wir Distinct in C# für Array-Deduplizierung, allgemeine arraybasierte Datentypen wie int, String. können auch für Objektdeduplizierung verwendet werden. Schauen wir uns die Definition der Disdifferentie-Methode in C# an:



Es gibt eine hohe Belastung, der erste Parameter wird hinzugefügt, nämlich die Expansionsmethode, bitte Baidu versteht es.
Untersuchen wir die Objektdeduplizierung von Disdinct, nehmen wir an, wir haben jetzt eine People-Klasse:




Wir deklarieren eine Sammlung von ListPeole-Objekten:

Verwenden wir die Disdifferent-Methode auf ListPeople ohne Parameter, und das Ergebnis ist wie folgt:



Man kann sehen, dass die Differentiatie-Methode, wenn sie keine Parameter hat, p, p1, p2 im Objektsatz dedupliziert wird und es keine Deduplizierung für verschiedene Objekte mit demselben Elementwert des Objekts gibt.
Jetzt gibt es die Anforderung, dass Personen mit derselben ID als dieselbe Person gezählt werden, um die nicht-duplizierten Personen im Set auszugeben (geben Sie einfach eine für dieselbe ID aus). Zu diesem Zeitpunkt verwenden wir die zweite Methode von Distinkt. Die Methode verlangt, dass die eingereichten Parameter vom Typ IEqualityComparer sind, die eine generische Schnittstelle erben. Wir fügen folgenden Code hinzu:


Indem Sie die IEqualityComparer-Schnittstelle übernehmen, müssen Sie die Methoden Equals und GetHashCode implementieren.
Beim Vergleich können wir eine Entität mit PeopleCompareByID eingeben:


Die Ergebnisse des Laufs sind wie folgt:



Wir haben den Effekt der Deduplizierung durch ID erreicht.
Nun haben sich die Anforderungen wieder geändert, ID und Provinz sind dieselbe Person, um die Informationen der Person auszugeben (sie kann eine nach Belieben ausgeben), zu diesem Zeitpunkt sehen wir, dass ID=0 und Provinz="Hubei" dupliziert werden, um sie zu deduplizieren, haben wir eine weitere Klasse oder erben von IEqualityComparer:


Ähnlich wird bei Verwendung der Disdifferent-Methode eine Instanz von PeopleCompareByIDAndProvince passiert:

Die Ergebnisse nach dem Laufen sind wie folgt:



Wir haben den gewünschten Effekt erreicht.
Diese Methode kann verwendet werden, wenn das Problem der Deduplizierung mit drei oder mehr Objektmitgliedern auftritt, um zu bestimmen, ob das Objekt dupliziert ist.
Das Obige ist meine bescheidene Meinung.






Vorhergehend:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Nächster:C# Deep Dive – Destructors
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com