У меня есть две коллекции строк: CollectionA - свойство StringCollection объекта, хранящегося в системе, а CollectionB - это List, сгенерированный во время выполнения. 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)
). Может ли кто-нибудь пролить некоторое представление о том, почему это перечисление терпит неудачу?