【发布时间】:2014-06-28 12:28:51
【问题描述】:
我正在尝试删除 IDictionary 对象中与条件匹配的所有元素。
例如IDictionary 包含一组键和相应的值(比如说 80 个对象)。键是字符串,值可以是不同的类型(想想使用 directshow 从 wtv 文件中提取元数据)。
某些键包含文本“thumb”,例如拇指大小,开始拇指日期等。 我想从 IDictionary 中删除所有包含单词 thumb 的对象。
我在这里看到的唯一方法是使用 .Remove 方法手动指定每个键名。
有什么方法可以让所有键中包含 thumb 的对象,然后将它们从 IDictionary 对象中删除。
代码如下所示:
IDictionary sourceAttrs = editor.GetAttributes();
GetAttributes 定义为:
public abstract IDictionary GetAttributes();
我无法控制 GetAttributes,它返回一个 IDictionary 对象,我只能在调试时查看它的内容。 (可能是哈希表)
更新:感谢蒂姆的最终答案:
sourceAttrs = sourceAttrs.Keys.Cast<string>()
.Where(key => key.IndexOf("thumb", StringComparison.CurrentCultureIgnoreCase) == -1)
.ToDictionary(key => key, key => sourceAttrs[key]);
【问题讨论】:
-
真实类型是什么?如果它实际上是一个通用字典,你可以简单地转换它。您可以通过
as运算符尝试投射它。例如:var dict = sourceAttrs as Dictionary<string, object>。如果演员表不起作用,则为 null。 -
不知道,看起来像一个带有
的哈希表 -
请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。
-
知道了,谢谢日后参考
标签: c# match idictionary