使用 Enumerable.Range() 填充字典的问题
Posted
技术标签:
【中文标题】使用 Enumerable.Range() 填充字典的问题【英文标题】:Problem in populating a dictionary using Enumerable.Range() 【发布时间】:2011-02-14 23:55:19 【问题描述】:如果我这样做
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
谢谢
【问题讨论】:
appSettings
的类型是什么?
似乎您已经想出办法了,但是...您的第二个代码 sn-p 没有多大意义。这纯粹是学术活动吗?
【参考方案1】:
谢谢我的答案
Enumerable.Range(0, appSettings.Count).ToList().ForEach(i =>
euFileDictionary.Add(appSettings.Keys[i], appSettings[i]);
);
【讨论】:
【参考方案2】:Enumerable.Range(0, appSettings.Count).Select(i =>
new
Key = appSettings.Keys[i],
Value = appSettings[i]
)
.ToDictionary(x => x.Key, x => x.Value);
【讨论】:
【参考方案3】:Enumerable.Range(0, appSettings.Count)
.ToDictionary(
i => appSettings.Keys[i],
i => appSettings[i]);
【讨论】:
以上是关于使用 Enumerable.Range() 填充字典的问题的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Enumerable.Range 实现 IDisposable?
为啥 Enumerable.Range 比直接 yield 循环快?
关于 Enumerable.Range 与传统 for 循环的 foreach 的思考
csharp 对于那些需要在一段时间内创建DropDownList的时候,您可以通过“Enumerable.Range”轻松完成。样本c