Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 24681|Відповідь: 1

[Джерело] C# Різні умовно дедупліковані об'єкти

[Копіювати посилання]
Опубліковано 17.08.2018 10:56:00 | | | |
Зазвичай ми використовуємо Distinct у C# для дедуплікації масивів, загальних типів даних на основі масивів, таких як int, рядок. Також можна використовувати для дедуплікації об'єктів, давайте розглянемо визначення методу Distinct у C#:



Є велике навантаження, перший параметр додається — це метод розширення, щодо методу розширення, будь ласка, Baidu, зрозумійте.
Давайте вивчаємо дедуплікацію об'єктів у Different, припустимо, тепер у нас є клас People:




Ми декларуємо колекцію об'єктів ListPeole:

Давайте використаємо метод Distinct на ListPeople без жодних параметрів, і результат такий:



Можна побачити, що якщо метод Distinct не має параметрів, він дедуплікує p, p1, p2 у множині об'єктів, і немає дедуплікації для різних об'єктів з однаковим значенням члена об'єкта.
Тепер у нас є вимога: для людей з однаковим ID, які ми рахуємо як одну й ту саму особу, щоб вивести недублованих осіб у множині (просто вивести одного для того ж ID), на цьому етапі ми використовуємо другий метод Different, метод вимагає, щоб параметри, передані в типі IEqualityComparer, успадковуючи загальний інтерфейс, додаємо наступний код:


Успадкувавши інтерфейс IEqualityComparer, потрібно реалізувати методи Equals і GetHashCode.
Коли ми порівнюємо, ми можемо передати сутність із PeopleCompareByID:


Результати забігу такі:



Ми досягли ефекту дедуплікації за допомогою ID.
Тепер вимоги знову змінилися: ID і провінція — це одна й та сама особа, щоб вивести інформацію про цю особу (той самий може виводити її за бажанням), зараз ми бачимо, що ID=0 і Province="Hubei" дубльовані, для дедуплікації ми маємо інший клас або успадковують від IEqualityComparer:


Аналогічно, при використанні методу Distinct, передається інстанс PeopleCompareByIDAndProvince:

Результати після бігу такі:



Досягли бажаного ефекту.
Цей метод можна використовувати при виникненні проблеми дедуплікації трьох або більше елементів об'єкта, щоб визначити, чи є об'єкт дубльованим.
Вищезазначене — моя скромна думка.






Попередній:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Наступний:C# Глибоке занурення - Руйнівники
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com