我有 2 个列表:
ListA { 'A', 'B', 'C' } //ListA is DictA.Keys
ListB { 'B', 'X', 'Y' } //ListB is DictB.Keys
如果我这样做,ListA.Except(ListB)
我会返回一个异常迭代器,这将使我可以遍历 ListA 以获取不在 ListB 中的任何项目。问题是它的实现也是简单地使用 ListA (出于某种原因,我认为它会创建一个不同的项目的新集合)。好吧,我发现它仍然使用 ListA 作为源,但只是使用了一种特殊类型的迭代器。因此,当然,当我从 ListA 中删除一个项目时,它会抱怨该集合已被修改。
我可以想出几种方法来做我想做的事,首先是复制 ListA 并在副本上执行 except。第二个是只做一个while循环。我只是想知道这个问题的最佳解决方案是什么,以及什么遵循标准指南。
如果我以错误的方式解决这个问题,我很想知道这一点。我的主要目标是使用键作为比较从不在 DictB 中的 DictA 中删除所有内容。