我试图删除所有符合条件的IDictionary对象中的元素。
例如,IDictionary包含一组键和相应的值(假设有80个对象)。 键是字符串,值可以是不同类型的值(使用DirectShow从wtv文件中提取元数据)。
其中一些键包含文本“thumb”,例如thumbsize,startthumbdate等。 我想从IDictionary中删除所有键包含单词thumb的对象。
我唯一能想到的方法是手动使用.Remove方法指定每个键名。
是否有一种方法可以获取所有键包含单词thumb的对象并将它们从IDictionary对象中删除?
代码如下:
IDictionary sourceAttrs = editor.GetAttributes();
GetAttributes的定义如下:
public abstract IDictionary GetAttributes();
我无法控制GetAttributes,它返回一个IDictionary对象,只能在调试时查看其内容(可能是HashTable)。
更新:感谢Tim给出的最终答案:
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。 - Tim Schmelter