私はこの1つに苦労しています。列挙の一部ではない別のコレクションを変更しているので、なぜこの特定のエラーがスローされているのかを論理的に見ることはできません。コレクションが変更されました。列挙操作は実行できません(別のコレクションで)
は、以下のif文で「リンク」を削除しようとしたとき
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);
}
}
}
例外がスローされた私のコードです。しかし、私は理由を見ることができません。 ResultsCopyは、foreachループが列挙しているResultsDictコレクションとは完全に別のコレクションである必要があります。
誰かが私が逃したものを私に説明してもらえますか?ここで私はかなり理解していない基本的なものがあるようです。
私はいくつかのポストを通過して解決策を試しましたが、何も動作していないようです。私は参照を作成せずにResultsDictのコピーを作成するために考えることができるすべてを試しましたが、私はまだこのエラーが発生し続けます。
かいつまん:あなたは 'foreach'ループ内で使用されているコレクションを変更することはできません。代わりに 'for'を使用してください。 – Alex
@Alexコードを読むと、彼は彼が変更している同じコレクションをループしていません – EpicKip
しかし、変更しようとしているコレクションのIMはforeachループの外ですか?そのコレクションではなく、私はループしている – user2920648