すでに述べたように、あなたがやろうとしていることは不可能です。ただし、別の解決策は、削除のマークが付けられたアイテムのリストを維持してから、これらのアフターワードを削除することです。また、ループで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);
}