Мне нужно удалить несколько элементов из словаря.
Простой способ сделать это заключается в следующем:
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);
Причина, по которой я не могу напрямую удалить элементы в блоке foreach, заключается в том, что это вызовет исключение («Коллекция была изменена ...»)
Я бы хотел сделать следующее:
MyCollection.RemoveAll(x =>x.Member==foo)
Но класс Dictionary <> не предоставляет метод RemoveAll (Predicate <> Match), как это делает класс List <. </p>
Каков наилучший способ (как по производительности, так и по элегантности) сделать это?