c# - una - Cómo encontrar Lista tiene valores duplicados en Lista<cadena>




eliminar registros duplicados de una lista c# (4)

¿Cómo encontrar si la List<string> tiene valores duplicados o no?

Intenté con el código a continuación. ¿Hay alguna forma de lograrlo?

var lstNames = new List<string> { "A", "B", "A" };

if (lstNames.Distinct().Count() != lstNames.Count())
{
    Console.WriteLine("List contains duplicate values.");
}

¿Qué hay de tratar de convertir a diccionario?

public bool HasDuplicates(List<String> lstNames)
{
                try
                {
                    var test = lstNames.ToDictionary(x => x, y => y);
                    return false;
                }
                catch (Exception ex)
                {
                    return true;
                }
}

Intenta usar GroupBy y Any like;

lstNames.GroupBy(n => n).Any(c => c.Count() > 1);

Método GroupBy ;

Agrupa los elementos de una secuencia de acuerdo con una función de selector de clave especificada y proyecta los elementos para cada grupo utilizando una función específica.

Any método, devuelve boolean ;

Determina si algún elemento de una secuencia existe o satisface una condición.


Una versión de extensión generalizada y compacta de la respuesta basada en la técnica hash:

public static bool AreAnyDuplicates<T>(this IEnumerable<T> list)
{
    var hashset = new HashSet<T>();
    return list.Any(e => !hashset.Add(e));
}

var duplicateExists = lstNames.GroupBy(n => n).Any(g => g.Count() > 1);




list