所以我创建了一个我想删除的项目字典的投影.
var toRemoveList =
this.outputDic.Keys.Where(key =>
this.removeDic.ContainsKey(key));
Run Code Online (Sandbox Code Playgroud)
然后我遍历从实际字典中删除的结果
foreach(var key in toRemoveList)
this.outputDic.Remove(key);
Run Code Online (Sandbox Code Playgroud)
但是在该foreach期间抛出一个异常,表示该循环期间修改了列表.但是,怎么这样呢?linq查询是否有点动态,每次字典更改时都会重新评估?查询结尾处的一个简单的.ToArray()调用解决了问题,但是imo,它甚至不应该首先出现.