我正在尝试删除与条件匹配的 IDictionary 对象中的所有元素。
例如,IDictionary 包含一组键和相应的值(比如说 80 个对象)。键是字符串,值可以是不同的类型(想想使用 directshow 从 wtv 文件中提取元数据)。
一些键包含文本“thumb”,例如 thumbsize、startthumbdate 等。我想从 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]);