我有一个通用字典,其中TValue的类型是String (Dictionary<int, string>)。我选择使用字符串作为值类型,因为数据是从一个Xml文件加载的,该文件的源值可以是字符或数字数据类型(我认为Object也是一种可以接受的TValue类型,但即使这样,这个问题也同样适用)。
字符数据类型也很重要,所以不能完全排除它们。
我想提取这个Dictionary<int, double>的一个子集。换句话说,我想要字典的子集,其中的值是数值。
现在我是这样做的:
Dictionary<int, string> myDictionary;
// Do some loading.
var numericData = myDictionary.Where(kvp => Double.TryParse(kvp.Value, out temp) 这种方法太难看了,作为一个Dictionary<int, double>,我没有得到结果。有谁能提供其他方法来改善这一点吗?
谢谢!
发布于 2012-01-26 23:35:09
您可以使用包含双精度值的temp变量创建一个新的字典-这利用了这样一个事实,即枚举和添加字典是逐项完成的,因此temp包含正确的双精度值:
double temp = 0;
var numDict = myDictionary.Where(kvp => Double.TryParse(kvp.Value, out temp))
.ToDictionary( x=> x.Key, x=> temp);https://stackoverflow.com/questions/9020563
复制相似问题