迭代字典时删除

Joh*_*aum 12 c#

可能重复:
在枚举时修改.NET字典

当我迭代并做一些操作时,我有一个字典对象.基于条件我应该删除或保持我正在迭代的keyvalue对.在迭代时从字典中删除keyvaluepair的最佳方法是什么?我试图使用一个单独的字典对象来跟踪要删除的元素,但我不知道如何使用它从我的主字典中删除或者如果这甚至是最有效的方法来做到这一点

谢谢

Raw*_*ing 17

在找到密钥时,请保留要删除的密钥列表.然后,完成后,遍历此列表,调用myDictionary.Remove(key)您存储的每个密钥.

  • 这意味着2次迭代,一次是要删除文件而另一种是删除项目,为什么不将你不想删除的项目复制到另一个字典? (5认同)
  • "为什么不把你不想删除的项目复制到另一个字典?" 如果预计要删除的项目数量非常少或删除很少,那么这将是非常不可靠的.所以建议取决于数据访问模式 (2认同)

Euc*_*bwè 5

尝试使用单独的词典,而不是标记要删除的键值,而要插入要保留的da键值,并在和处执行以下操作:old_map = new_map。