所以我一直在努力解决这个问题,我无法从逻辑上看到为什么会抛出这个特殊错误,因为我正在修改一个不属于枚举的不同集合。
下面是我的代码
var ResultsDict = cache["ResultsDictionary"] as Dictionary<string, ContentModel>;
var Resultscopy = ResultsDict.ToDictionary(x => x.Key, x => x.Value);
var ResultsList = new List<ContentModel>();
foreach (var Result in ResultsDict.ToList())
{
foreach (var link in Result.Value.LinksOnNode)
{
if (ResultsDict.ContainsKey(link))
{
Resultscopy[Result.Key].LinksOnNode.Remove(link);
}
}
}
尝试删除&#39; link&#39;时会抛出异常在if语句中。但我不明白为什么。 ResultsCopy应该是foreach循环枚举的ResultsDict集合中一个完全独立的集合。
有人可以向我解释一下我错过了什么吗?这里似乎有一些基本的东西,我不太了解。
我已经完成了几个帖子并尝试了他们的解决方案,但似乎没有任何效果。我已经尝试了一切我能想到的创建ResultsDict的副本而不创建引用,但我仍然会收到此错误。
答案 0 :(得分:2)
所以你要修改:
Resultscopy[Result.Key].LinksOnNode.Remove(link);
但是还要迭代“LinksOnNode”集合:
foreach (var link in Result.Value.LinksOnNode)
我认为其中一个集合“LinksOnNode”也在被迭代(请记住这些将是相同的)。
尝试将您的foreach更改为:
foreach (var link in Result.Value.LinksOnNode.ToArray())