【发布时间】:2010-05-07 20:31:51
【问题描述】:
我有两个字符串集合:CollectionA 是存储在系统中的对象的 StringCollection 属性,而 CollectionB 是在运行时生成的 List。如果有任何差异,则需要更新 CollectionA 以匹配 CollectionB。所以我设计了一个我期望的简单的 LINQ 方法来执行删除。
var strDifferences = CollectionA.Where(foo => !CollectionB.Contains(foo));
foreach (var strVar in strDifferences) { CollectionA.Remove(strVar); }
但我在 strDifferences 上收到 "Collection was modified; enumeration operation may not execute" 错误...即使它是与正在修改的集合分开的可枚举!我最初设计这个明确是为了规避这个错误,因为我的第一个实现会产生它(因为我在CollectionA 中枚举并在!CollectionB.Contains(str) 时删除)。任何人都可以深入了解为什么此枚举失败?
【问题讨论】:
标签: c# linq enumeration