Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 24681|Odpowiedź: 1

[Źródło] C# Distinct warunkowo deduplikuje obiekty

[Skopiuj link]
Opublikowano 17.08.2018 10:56:00 | | | |
Zazwyczaj używamy Distinct w C# do deduplikacji tablic, ogólne typy danych oparte na tablicach, takie jak int, string. mogą być również używane do deduplikacji obiektów, przyjrzyjmy się definicji metody Distinct w C#:



Jest duże obciążenie, dodaje się pierwszy parametr, czyli metodę rozprężania, o metodzie rozprężania, proszę Baidu zrozumieć.
Przyjrzyjmy się deduplikacji obiektów w Distinct, załóżmy, że mamy teraz klasę People:




Deklarujemy kolekcję obiektów ListPeole:

Użyjmy metody Distinct na ListPersons bez żadnych parametrów, a wynik jest następujący:



Widać, że jeśli metoda Distinct nie ma parametrów, deduplikuje p, p1, p2 w zbiorze obiektów i nie ma deduplikacji dla różnych obiektów o tej samej wartości członkopodobnej obiektu.
Teraz mamy wymóg, dla osób o tym samym ID, które liczymy jako tę samą osobę, aby wypisać osoby nieduplikujące się w zbiorze (wystarczy wypisać jedną dla tego samego ID), w tym momencie używamy drugiej metody Distinct, która wymaga, aby parametry przekazane do były typu IEqualityComparer, dziedzicząc interfejs ogólny, dodajemy następujący kod:


Dziedzicząc interfejs IEqualityComparer, musisz zaimplementować metody Equals i GetHashCode.
Porównując to, możemy wprowadzić jednostkę z PeopleCompareByID:


Wyniki przejazdu są następujące:



Osiągnęliśmy efekt deduplikacji przez ID.
Teraz wymagania ponownie się zmieniły, ID i prowincja to ta sama osoba, aby wygenerować informacje o osobie (ta sama może wydać ją według uznania), w tym momencie widzimy, że ID=0 i Prowincja="Hubei" są zdublowane, aby je zdeduplikować, mamy inną klasę lub dziedziczymy z IEqualityComparer:


Podobnie, używając metody Distinct, przekazywana jest instancja PeopleCompareByIDAndProvince:

Wyniki po biegu są następujące:



Osiągnęliśmy efekt, którego chcieliśmy.
Metoda ta może być stosowana w przypadku problemu deduplikacji z udziałem trzech lub więcej członków obiektu, aby określić, czy obiekt jest zduplikowany.
Powyższe to moja skromna opinia.






Poprzedni:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Następny:C# Deep Dive - Destructors
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com