Почему я получаю «Коллекция была изменена; операция перечисления может не выполняться », если не изменена перечисляемая коллекция? [Дубликат]
На этот вопрос уже есть ответ здесь:
Коллекция была изменена; операция перечисления может не выполняться в ArrayList [duplicate] 9 ответовУ меня есть две коллекции строк: CollectionA - это свойство StringCollection объекта, хранящегося в системе, а CollectionB - это список, сгенерированный во время выполнения. CollectionA необходимо обновить, чтобы соответствовать CollectionB, если есть какие-либо различия. Поэтому я разработал простой метод LINQ для удаления.
var strDifferences = CollectionA.Where(foo => !CollectionB.Contains(foo));
foreach (var strVar in strDifferences) { CollectionA.Remove(strVar); }
Но я получаю"Collection was modified; enumeration operation may not execute"
ошибка в strDifferences ... даже если это отдельный перечисляемый элемент из изменяемой коллекции! Я изначально придумал этоэксплицитно чтобы избежать этой ошибки, поскольку моя первая реализация произвела бы это (как я перечислял черезCollectionA
и просто удаляя когда!CollectionB.Contains(str)
). Может ли кто-нибудь пролить свет на то, почему это перечисление не удается?