Je dois supprimer plusieurs éléments d'un dictionnaire. Une façon simple de le faire est la suivante :
List<string> keystoremove= new List<string>();
foreach (KeyValuePair<string,object> k in MyCollection)
if (k.Value.Member==foo)
keystoremove.Add(k.Key);
foreach (string s in keystoremove)
MyCollection.Remove(s);
La raison pour laquelle je ne peux pas supprimer directement les éléments dans le bloc foreach est que cela entraînerait une exception ("La collection a été modifiée...").
Je voudrais faire ce qui suit :
MyCollection.RemoveAll(x =>x.Member==foo)
Mais la classe Dictionary<> n'expose pas une méthode RemoveAll(Predicate<> Match), comme le fait la classe List<>.
Quelle est la meilleure façon (à la fois en termes de performances et d'élégance) de le faire ?