Как уже говорилось, то, что вы хотите сделать, невозможно.Однако альтернативным решением было бы просто сохранить список элементов, помеченных для удаления, а затем удалить эти послесловия.Я также выбрал бы foreach
, а не while
цикл, за исключением кода, например,
var removeList = new List<decimal>();
foreach (var item in myDictionary)
{
// have a condition which indicates which items are to be removed
if (item.Key > 1)
{
removeList.Add(item.Key);
}
}
. Или, если вы просто пытаетесь получить элементы для удаления, используйте LINQ
var removeList = myDictionary.Where(pair => pair.Key > 1).Select(k => k.Key).ToList();
Затем просто удалите их из списка.
// remove from the main collection
foreach (var key in removeList)
{
myDictionary.Remove(key);
}