I'm trying to remove all elements in a IDictionary object that match a condition.
E.g. the IDictionary contains a set of keys and corresponding values (let say 80 objects). The keys are strings, the values could be of different types (think extracting metadata from a wtv file using directshow).
Some of the keys contains the text "thumb", e.g. thumbsize, startthumbdate etc. I want to remove all objects from the IDictionary who's keys contain the word thumb.
The only way I'm seeing here is to manually specify each key name using the .Remove method.
Is there some way to get all the objects who's keys contain the word thumb and them remove them from the IDictionary object.
The code looks like this:
IDictionary sourceAttrs = editor.GetAttributes();
GetAttributes is defined as:
public abstract IDictionary GetAttributes();
I don't have control over GetAttributes, it's returns an IDictionary object, I only know the contents by looking at it while debugging. (likely a HashTable)
UPDATE: Final Answer thanks to Tim:
sourceAttrs = sourceAttrs.Keys.Cast<string>()
.Where(key => key.IndexOf("thumb", StringComparison.CurrentCultureIgnoreCase) == -1)
.ToDictionary(key => key, key => sourceAttrs[key]);
as
operator. For example:var dict = sourceAttrs as Dictionary<string, object>
. It's null if the cast doesn't work. – Helios