Как исправить ошибку 'Collection Modified'
static void Main(string[] args)
{
using (FileStream zipToOpen = new FileStream(@"...", FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
foreach (var item in archive.Entries)
{
if (item.Name != "video.mp4")
{
Console.WriteLine(item.Name);
item.Delete();
}
}
}
}
}
Я хочу чтобы из zip файла удалились все файлы, которые не является 'video.mp4', но я получаю ошибку 'Collection was modified; enumeration operation may not execute'
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Можно так, по-простому
for (int i = 0; i < archive.Entries.Count; i++)
{
var item = archive.Entries[i];
if (item.Name != "video.mp4")
{
Console.WriteLine(item.Name);
item.Delete();
i--;
}
}
Или с помощью Linq на основе примера от @tym32167
archive.Entries
.Where(item => item.Name != "video.mp4")
.ToList()
.ForEach(item =>
{
Console.WriteLine(item.Name);
item.Delete();
});