Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 24681|Respuesta: 1

[Fuente] C# Objetos desduplicados condicionalmente en C#

[Copiar enlace]
Publicado en 17/8/2018 10:56:00 | | | |
Normalmente, usamos Distinct en C# para la deduplicación de arrays, tipos de datos generales basados en arrays, como int, cadena. también pueden usarse para la deduplicación de objetos, veamos la definición de método Distinct en C#:



Hay una carga pesada, se añade el primer parámetro, que es el método de expansión, sobre el método de expansión, por favor Baidu entiende.
Estudiemos la deduplicación de objetos de Distinct, supongamos que ahora tenemos una clase People:




Declaramos una colección de objetos ListPeole:

Usemos el método Distinct en ListPeople sin ningún parámetro, y el resultado es el siguiente:



Se puede ver que si el método Distinct no tiene parámetros, se deduplicará p, p1, p2 en el conjunto de objetos, y no hay deduplicación para diferentes objetos con el mismo valor de miembro del objeto.
Ahora tenemos un requisito: para las personas con el mismo ID, contamos como la misma persona, para que las personas no duplicadas del conjunto se produzcan (solo una para el mismo ID), en este momento usamos el segundo método Distinct, que requiere que los parámetros que se transmitan sean de tipo IEqualityComparer, heredando una interfaz genérica, añadimos el siguiente código:


Heredando la interfaz IEqualityComparer, debes implementar los métodos Equals y GetHashCode.
Cuando comparamos, podemos pasar una entidad con un PeopleCompareByID:


Los resultados de la carrera son los siguientes:



Hemos logrado el efecto de la deduplicación por ID.
Ahora los requisitos han cambiado de nuevo, el ID y la provincia son la misma persona, para generar la información de la persona (la misma puede generar una a voluntad), en este momento vemos que ID=0 y Province="Hubei" están duplicados, para deduplicarlo tenemos otra clase, o heredamos de IEqualityComparer:


De manera similar, al usar el método Distinct, se pasa una instancia de PeopleCompareByIDAndProvince:

Los resultados tras correr son los siguientes:



Logramos el efecto que queríamos.
Este método puede utilizarse al encontrarse con el problema de la deduplicación con tres o más elementos de objeto para determinar si el objeto está duplicado.
Lo anterior es mi humilde opinión.






Anterior:MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
Próximo:C# Deep Dive - Destructors
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com