Why am I getting "Collection was modified; enumeration operation may not execute" when not modifying
        Posted  
        
            by ccornet
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by ccornet
        
        
        
        Published on 2010-05-07T20:31:51Z
        Indexed on 
            2010/05/07
            20:38 UTC
        
        
        Read the original article
        Hit count: 326
        
I have two collections of strings: CollectionA is a StringCollection property of an object stored in the system, while CollectionB is a List generated at runtime. CollectionA needs to be updated to match CollectionB if there are any differences. So I devised what I expected to be a simple LINQ method to perform the removal.
var strDifferences = CollectionA.Where(foo => !CollectionB.Contains(foo));
foreach (var strVar in strDifferences) { CollectionA.Remove(strVar); }
But I am getting a "Collection was modified; enumeration operation may not execute" error on strDifferences... even though it is a separate enumerable from the collection being modified! I originally devised this explicitly to evade this error, as my first implementation would produce it (as I was enumerating across CollectionA and just removing when !CollectionB.Contains(str)). Can anyone shed some insight into why this enumeration is failing?
© Stack Overflow or respective owner