2010-05-03 2 views
3

Si jeproblème dans peuplant un dictionnaire en utilisant Enumerable.Range()

for (int i = 0; i < appSettings.Count; i++) 
{ 
    string key = appSettings.Keys[i]; 
    euFileDictionary.Add(key, appSettings[i]); 
} 

Il fonctionne très bien.

Quand je suis en train de la même chose en utilisant

Enumerable.Range(0, appSettings.Count).Select(i => 
{ 
    string Key = appSettings.Keys[i]; 
    string Value = appSettings[i]; 
    euFileDictionary.Add(Key, Value); 
}).ToDictionary<string,string>(); 

Je reçois une erreur de compilation

Les arguments de type pour la méthode « System.Linq.Enumerable.Select (System.Collections.Generic .IEnumerable, System.Func) » ne peut pas être déduit de l'utilisation. Essayez de spécifier explicitement les arguments de type.

Toute idée?

utilisant C# 3.0

Merci

+0

Quel est le type de 'appSettings'? – leppie

+0

On dirait que vous avez compris quelque chose, mais ... Votre deuxième extrait de code n'a pas beaucoup de sens. Était-ce un exercice purement théorique? – Thorarin

Répondre

3
Enumerable.Range(0, appSettings.Count).Select(i => 
new 
{ 
    Key = appSettings.Keys[i], 
    Value = appSettings[i] 
}) 
.ToDictionary(x => x.Key, x => x.Value); 
0

Merci j'ai reçu la réponse

Enumerable.Range(0, appSettings.Count).ToList().ForEach(i => 
{ 
    euFileDictionary.Add(appSettings.Keys[i], appSettings[i]); 
}); 
+4

Mutation est mauvais, mmmkay. – leppie

2
Enumerable.Range(0, appSettings.Count) 
      .ToDictionary(
       i => appSettings.Keys[i], 
       i => appSettings[i]); 
Questions connexes