© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•15mo ago•
15 replies
!🌸! Rushaan

Collection was modified. Enumeration operation may not execute.

Code:
public async Task<bool> DeleteFolder(Folder folder) 
{
    if (folder.SubFolders.Any()) 
    {
        foreach (Folder f in folder.SubFolders) 
        {
            await DeleteFolder(f);
        }
    }

    if (folder.Files.Any()) 
    {
        foreach (Core.Domain.Entities.File file in folder.Files) 
        {
            DisconnectAndNullifyMetadataAndSharing(file);
            _db.Files.Remove(file);
        }
    }

    folder.ParentFolder = null;
    folder.ParentFolderId = null;

    DisconnectAndNullifyMetadataAndSharing(folder);
    _db.Folders.Remove(folder);

    return await _db.SaveChangesAsync() > 0;
}

// Utility Function
private void DisconnectAndNullifyMetadataAndSharing(BaseForFileFolder entity) 
{
    if (entity.Metadata != null)
    {
        Metadata metadata = entity.Metadata;
        metadata.File = null;

        entity.Metadata = null;
        entity.MetadataId = null;
    }
    if (entity.Sharing != null)
    {
        Sharing sharing = entity.Sharing;
        sharing.File = null;

        entity.Sharing = null;
        entity.SharingId = null;
    }
}
public async Task<bool> DeleteFolder(Folder folder) 
{
    if (folder.SubFolders.Any()) 
    {
        foreach (Folder f in folder.SubFolders) 
        {
            await DeleteFolder(f);
        }
    }

    if (folder.Files.Any()) 
    {
        foreach (Core.Domain.Entities.File file in folder.Files) 
        {
            DisconnectAndNullifyMetadataAndSharing(file);
            _db.Files.Remove(file);
        }
    }

    folder.ParentFolder = null;
    folder.ParentFolderId = null;

    DisconnectAndNullifyMetadataAndSharing(folder);
    _db.Folders.Remove(folder);

    return await _db.SaveChangesAsync() > 0;
}

// Utility Function
private void DisconnectAndNullifyMetadataAndSharing(BaseForFileFolder entity) 
{
    if (entity.Metadata != null)
    {
        Metadata metadata = entity.Metadata;
        metadata.File = null;

        entity.Metadata = null;
        entity.MetadataId = null;
    }
    if (entity.Sharing != null)
    {
        Sharing sharing = entity.Sharing;
        sharing.File = null;

        entity.Sharing = null;
        entity.SharingId = null;
    }
}



Error:
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.Collections.Generic.List`1.Enumerator.MoveNext()
   at CloudStoragePlatform.Infrastructure.Repositories.FoldersRepository.DeleteFolder(Folder folder) in C:\Users\rusha\source\repos\Cloud Storage Platform\CloudStoragePlatform.Infrastructure\Repositories\FoldersRepository.cs:line 135
System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
   at System.Collections.Generic.List`1.Enumerator.MoveNext()
   at CloudStoragePlatform.Infrastructure.Repositories.FoldersRepository.DeleteFolder(Folder folder) in C:\Users\rusha\source\repos\Cloud Storage Platform\CloudStoragePlatform.Infrastructure\Repositories\FoldersRepository.cs:line 135


It seems that the error is being triggered because database is being updated while iterating over the collection of entities in the database or is it happening only because properties of collection are being changed while inside the for loop or because of _db.Folders.Remove(...) ?

Also how can I fix it because at the end of the day I want to modify the collection and delete the rows I wanna delete? I got an idea but I think forgot it
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

Collection was modified enumeration operation may not execute
C#CC# / help
4y ago
✅ enumeration help
C#CC# / help
17mo ago
Modified collection (IsoDayOfWeek noda time enum) not being persisted upon SaveChanges
C#CC# / help
3y ago
Restart method with fresh list to iterate through without triggering 'collection was modified' error
C#CC# / help
4y ago