Лучший способ удалить несколько элементов, соответствующих предикату, из словаря .NET?C#

Место общения программистов C#
Anonymous
Лучший способ удалить несколько элементов, соответствующих предикату, из словаря .NET?

Сообщение Anonymous »

Мне нужно удалить несколько элементов из словаря.
Простой способ сделать это следующим образом:

Код: Выделить всё

  List keystoremove= new List();
foreach (KeyValuePair 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.
Как лучше всего (как с точки зрения производительности, так и с точки зрения элегантности) это сделать?>

Подробнее здесь: https://stackoverflow.com/questions/469 ... dictionary

Вернуться в «C#»