Por que estou recebendo “A coleção foi modificada; operação de enumeração pode não ser executada ”ao não modificar a coleção enumerada? [duplicado]

Esta pergunta já tem uma resposta aqui:

A coleção foi modificada; operação de enumeração pode não ser executada em ArrayList [duplicado] 9 respostas

Eu tenho duas coleções de strings: CollectionA é uma propriedade StringCollection de um objeto armazenado no sistema, enquanto CollectionB é uma lista gerada em tempo de execução. A CollectionA precisa ser atualizada para corresponder à CollectionB, se houver alguma diferença. Então, eu inventei o que esperava ser um método LINQ simples para executar a remoção.

var strDifferences = CollectionA.Where(foo => !CollectionB.Contains(foo));
foreach (var strVar in strDifferences) { CollectionA.Remove(strVar); }

Mas estou recebendo um"Collection was modified; enumeration operation may not execute" erro em strDifferences ... mesmo que seja um enumerável separado da coleção que está sendo modificada! Eu originalmente inventei issoexplicitamente para evitar esse erro, como minha primeira implementação o produziria (como eu estava enumerandoCollectionA e apenas removendo quando!CollectionB.Contains(str)) Alguém pode esclarecer por que essa enumeração está falhando?

questionAnswers(3)

yourAnswerToTheQuestion