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



elementos repetidos (5)

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

¿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.");
}

Si estás buscando la forma más eficiente de hacerlo,

var lstNames = new List<string> { "A", "B", "A" };
var hashset = new HashSet<string>();
foreach(var name in lstNames)
{
    if (!hashset.Add(name))
    {
        Console.WriteLine("List contains duplicate values.");
        break;
    }
}

se detendrá tan pronto como encuentre el primer duplicado . Puede resumir esto en un método (o método de extensión) si lo va a usar en varios lugares.


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));
}

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.


Editar:

source.Split('/').Length-1




c# linq list