Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 24681|Ответ: 1

[Источник] C# Различные условно дедупликационные объекты

[Скопировать ссылку]
Опубликовано 17.08.2018 10:56:00 | | | |
Обычно мы используем Distinct в C# для дедупликации массивов, общие типы данных на основе массивов, такие как int, string. Также можно использовать для дедупликации объектов, давайте рассмотрим определение метода Distinct в C#:



Есть большая нагрузка, добавляется первый параметр — это метод расширения, что касается метода расширения, пожалуйста, Baidu, поймите.
Давайте изучим дедупликацию объектов в Distinct, допустим, теперь у нас есть класс Люди:




Мы объявляем коллекцию объектов ListPeole:

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



Можно увидеть, что если метод Distinct не имеет параметров, он будет дедупликацией p, p1, p2 в наборе объектов, и дедупликация для разных объектов с одним и тем же значением элемента не происходит.
Теперь у нас есть требование: для людей с одинаковым идентификатором, которые мы считаем одним и тем же человеком, чтобы вывести недублирующихся людей из множества (просто вывести одного для того же идентификатора). В этот момент мы используем второй метод Distinct, который требует, чтобы переданные параметры были типа 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