Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 24681|Отговор: 1

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

[Копирай линк]
Публикувано в 17.08.2018 г. 10:56:00 ч. | | | |
Обикновено използваме Distinct в C# за дедупликация на масиви, общи типове данни, базирани на масиви, като int, string. могат да се използват и за дедупликация на обекти, нека разгледаме дефиницията на метода Distinct в C#:



Има голямо натоварване, първият параметър се добавя, който е методът на разширение, относно метода на разширение, моля, Baidu, разберете.
Нека изследваме дедупликацията на обекти в Different, да кажем, че сега имаме клас People:




Обявяваме колекция от ListPeole обекти:

Нека използваме метода Distinct в ListPeople без никакви параметри, и резултатът е следният:



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


Наследявайки интерфейса IEqualityComparer, трябва да реализирате методите Equals и GetHashCode.
Когато сравняваме, можем да предадем обект с PeopleCompareByID:


Резултатите от бягането са следните:



Постигнахме ефекта на дедупликация чрез ID.
Сега изискванията отново се промениха, ID и провинцията са един и същ човек, за да се изведе информацията на лицето (същото може да я издаде по желание), в момента виждаме, че ID=0 и провинция="Хубей" се дублират, за да ги дедупликатираме, имаме друг клас, или наследяване от IEqualityComparer:


По подобен начин, при използване на метода Different, се преминава инстанция на PeopleCompareByIDAndProvince:

Резултатите след бягане са следните:



Постигнахме желания ефект.
Този метод може да се използва при среща с проблема с дедупликация при три или повече обектни елементи, за да се определи дали обектът е дублиран.
Горното е моето скромно мнение.






Предишен:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Следващ:C# Deep Dive - Разрушители
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com