使用Enumerable.Range()填充字典时出现问题

时间:2010-05-03 10:54:43

标签: c# linq lambda enumerable

如果我这样做

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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

谢谢,我得到了答案

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