Я пытаюсь удалить все элементы в объекте IDictionary, соответствующие условию.
Например. IDictionary содержит набор ключей и соответствующих значений (скажем, 80 объектов). Ключи - это строки, значения могут быть разных типов (подумайте об извлечении метаданных из файла wtv с помощью directshow).
Некоторые клавиши содержат текст «большой палец», например thumbsize, startthumbdate и т. д. Я хочу удалить все объекты из IDictionary, ключи которых содержат слово thumb.
Единственный способ, который я здесь вижу, - это вручную указать имя каждого ключа с помощью метода .Remove.
Есть ли способ получить все объекты, ключи которых содержат слово thumb, и удалить их из объекта IDictionary.
Код выглядит так:
IDictionary sourceAttrs = editor.GetAttributes();
GetAttributes определяется как:
public abstract IDictionary GetAttributes();
У меня нет контроля над GetAttributes, он возвращает объект IDictionary, я знаю содержимое только по его просмотру во время отладки. (вероятно, HashTable)
ОБНОВЛЕНИЕ: окончательный ответ благодаря Тиму:
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>
. Нулевой, если приведение не работает. - person Tim Schmelter   schedule 11.05.2014