我有以下词典:
public Dictionary<string,object> Items;
现在我需要获取Dictionary-item 的Value来自特定类型的所有Items .(例如"int")
var intValues = Items.OfType<KeyValuePair<string,int>> 根本行不通.
没有LinQ的代码将是这样的:
var intValues=new Dictionary<string,int>()
foreach (var oldVal in Items) {
  if (oldVal.Value is int) {
    intValues.add(oldVal.Key, oldVal.Value);
  }
}
(更新)我的例子应该显示基本的想法.但是如果可能的话,我会避免创建一个新的Dictionary作为结果.
foreach在LINQ 中您的直接翻译如下:
var intValues = Items.Where(item => item.Value is int)
                     .ToDictionary(item => item.Key, item => (int)item.Value);
所以基本上,你首先过滤它所在的item.Value位置int,然后使用ToDictionary你在哪里投射这些值来创建一个字典,int以确保生成的字典是一个Dictionary<string, int>.由于我们已经过滤了非整数,因此这种类型转换将始终成功.
| 归档时间: | 
 | 
| 查看次数: | 161 次 | 
| 最近记录: |