Ho una lista che voglio mettere in un dizionario, per semplicità i valori inseriti saranno tutti uguali.C# ToDictionary con ContainsKey check
Posso usare un ciclo 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);
}
}
Quanto sopra funziona.
ma voglio utilizzare ToDictionary fare lo stesso nel modo seguente -
Dictionary<string, int> myDictionary2 = list.ToDictionary(i => i, i => 1);
Naturalmente questo non riesce perché sto aggiungendo "Acqua" due volte.
Qual è il modo corretto di verificare la presenza di voci duplicate quando si utilizza ToDictionary?
Questo funzionerà, ma mi chiedo se OP vuole davvero un set. – Gabe
@Gabe: Non sono sicuro di non capire il tuo commento nel contesto della domanda - puoi chiarire? – BrokenGlass
Un dizionario in cui tutti i valori sono 1 è essenzialmente un set. Se l'utente non accede mai ai valori, non è necessario un dizionario reale. – Gabe