Проблема в заполнении словаря с помощью Enumerable.Range () - PullRequest
4 голосов
/ 03 мая 2010

Если я делаю

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

Работает нормально.

Когда я пытаюсь сделать то же самое, используя

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

Я получаю ошибку во время компиляции

Аргументы типа для метода 'System.Linq.Enumerable.Select (System.Collections.Generic.IEnumerable, System.Func)' не могут быть получены из использования. Попробуйте указать аргументы типа явно.

Есть идеи?

Использование C # 3.0

Спасибо

Ответы [ 3 ]

3 голосов
/ 03 мая 2010
Enumerable.Range(0, appSettings.Count).Select(i =>
new  
{   
   Key = appSettings.Keys[i],
   Value = appSettings[i]
})
.ToDictionary(x => x.Key, x => x.Value);
3 голосов
/ 03 мая 2010
Enumerable.Range(0, appSettings.Count)
          .ToDictionary(
              i => appSettings.Keys[i],
              i => appSettings[i]);
0 голосов
/ 03 мая 2010

Спасибо, я получил ответ

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