【发布时间】:2012-01-26 15:32:53
【问题描述】:
我有一个通用字典,其中 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> 的结果,谁能提供其他改进方法?
谢谢!
【问题讨论】:
-
除了少了分号,我一点都不觉得难看。你有什么问题?
-
@RedFilter:我有一个正确性问题 - 那是行不通的 :)
-
你的代码会在运行时惨遭轰炸。您不能将
IEnumerable<KeyValuePair<int, string>>转换为Dictionary<int, double>,即使您已限制为Value可解析为double的那些对。您至少需要致电ToDictionary(kvp => kvp.Key, kvp => Double.Parse(kvp.Value))。 -
@JonSkeet 我觉得演员阵容看起来很有趣,但他说他目前正在使用它:)。我很懒。
-
我意识到我在发布后设置了 InvalidCastException。将进行修改,以使问题的实际焦点不会被该错误分开。谢谢。