J'essaie de supprimer tous les éléments dans un objet IDictionary qui correspondent à une condition.Supprimer tous les éléments qui correspondent à une condition dans IDictionary
E.g. l'IDictionary contient un ensemble de clés et de valeurs correspondantes (disons 80 objets). Les clés sont des chaînes, les valeurs peuvent être de différents types (pensez à extraire les métadonnées d'un fichier wtv en utilisant DirectShow).
Certaines des clés contiennent le texte "pouce", par ex. thumbsize, startthumbdate etc. Je souhaite supprimer tous les objets de l'IDictionary dont les clés contiennent le mot thumb.
La seule façon dont je vois ici est de spécifier manuellement chaque nom de clé en utilisant la méthode .Remove.
Existe-t-il un moyen d'obtenir tous les objets dont les clés contiennent le mot «mot» et de les supprimer de l'objet IDictionary?
Le code ressemble à ceci:
IDictionary sourceAttrs = editor.GetAttributes();
GetAttributes est défini comme:
public abstract IDictionary GetAttributes();
Je ne sais pas le contrôle de GetAttributes, il est retourne un objet IDictionary, je ne le contenu par le regarder pendant le débogage. (Probablement un Hashtable)
MISE À JOUR: Réponse finales grâce à Tim:
sourceAttrs = sourceAttrs.Keys.Cast<string>()
.Where(key => key.IndexOf("thumb", StringComparison.CurrentCultureIgnoreCase) == -1)
.ToDictionary(key => key, key => sourceAttrs[key]);
De quoi s'agit-il? Si c'est un ditionary générique, vous pouvez simplement le lancer. Vous pouvez essayer de le lancer via l'opérateur 'as '. Par exemple: 'var dict = sourceAttrs comme Dictionary'. C'est nul si la distribution ne fonctionne pas. –
ne sait pas, ressemble à une hashtable avec –
rboy
S'il vous plaît, ne pas inclure d'informations sur une langue utilisée dans un titre de question, sauf si cela n'aurait pas de sens sans elle. Les balises servent à cette fin. –