valores una repetidos numeros lista eliminar elementos duplicados contar con array agrupar linq lambda linq-to-objects

linq - una - contar valores repetidos en un array c#



Comprobación de duplicados en un objeto complejo utilizando la expresión Linq o Lambda (3)

Existe un operador linq Distinct (), que le permite filtrar hacia abajo a un conjunto distinto de registros si solo desea los identificadores. Si ha configurado su clase para sobrescribir equivale a usted o tiene un IEqualityComparer puede llamar directamente al método de extensión Distinct para devolver los resultados únicos de la lista. Como bonificación adicional, también puede usar los métodos Union e Intersect para fusionar o filtrar entre dos listas.

Otra opción sería agrupar por ID y luego seleccionar el primer elemento.

var results = from item in list group item by item.id into g select g.First();

Acabo de empezar a aprender expresiones linq y lambda, y parecen ser una buena opción para encontrar duplicados en una colección compleja de objetos, pero me confundo un poco y espero que alguien pueda ayudarme a volver al camino de la codificación feliz. .

Mi objeto está estructurado como list.list.uniqueCustomerIdentifier

Necesito asegurarme de que no haya un uniqueCustomerIdentifier duplicado en todo el objeto complejo. Si hay duplicados, necesito identificar cuáles están duplicados y devolver una lista de los duplicados.


Si desea aplanar las dos jerarquías de lista, use el método SelectMany para aplanar un IEnumerable<IEnumerable<T>> en IEnumerable<T> .


  • Desempaquetar la jerarquía
  • Proyecte cada elemento a su propiedad uniqueID
  • Agrupe estas identificaciones
  • Filtra los grupos por grupos que tienen más de 1 elemento
  • Proyecte cada grupo a la clave del grupo (de vuelta a uniqueID)
  • Enumere la consulta y almacene el resultado en una lista.

var result = myList .SelectMany(x => x.InnerList) .Select(y => y.uniqueCustomerIdentifier) .GroupBy(id => id) .Where(g => g.Skip(1).Any()) .Select(g => g.Key) .ToList()