Tengo una lista que quiero poner en un diccionario, para simplificar, los valores que se insertan serán todos iguales.C# ToDictionary con ContainsKey check
Puedo usar un bucle foreach.
List<string> list = new List<string>();
list.Add("Earth");
list.Add("Wind");
list.Add("Fire");
list.Add("Water");
list.Add("Water"); // Will NOT BE INSERTED using the foreach loop
var myDictionary= new Dictionary<string, int>();
foreach (string value in list)
{
if (!myDictionary.ContainsKey(value))
{
myDictionary.Add(value, 1);
}
}
Lo anterior funciona.
Pero quiero usar ToDictionary hacer lo mismo de la siguiente manera -
Dictionary<string, int> myDictionary2 = list.ToDictionary(i => i, i => 1);
Por supuesto esto no funciona debido a que estoy añadiendo "agua" dos veces.
¿Cuál es la forma correcta de buscar entradas duplicadas al usar ToDictionary?
Esto funcionará, pero me pregunto si OP realmente quiere un conjunto. – Gabe
@Gabe: No estoy seguro de no entender su comentario en el contexto de la pregunta. ¿Puede aclarar? – BrokenGlass
Un diccionario donde todos los valores son 1 es esencialmente solo un conjunto. Si el usuario nunca accede a los valores, no es necesario un diccionario real. – Gabe