Cómo encontrar Lista tiene valores duplicados en Lista

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

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

 var lstNames = new List { "A", "B", "A" }; if (lstNames.Distinct().Count() != lstNames.Count()) { Console.WriteLine("List contains duplicate values."); } 

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.

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

 var lstNames = new List { "A", "B", "A" }; var hashset = new HashSet(); 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(this IEnumerable list) { var hashset = new HashSet(); return list.Any(e => !hashset.Add(e)); } 
 var duplicateExists = lstNames.GroupBy(n => n).Any(g => g.Count() > 1); 

¿Qué hay de tratar de convertir a diccionario?

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