Первая мысль. Не зацикливайтесь на foreach при удалении элементов из коллекции.
Я попробую таким образом
for(int x = zip.Count -1; x >= 0; x--)
{
ZipEntry e = zip[x];
if(e.FileName.Substring(0, 9) == "FolderName/")
zip.RemoveEntry(e.FileName);
}
Однако, глядя на методы класса ZipFile, я заметил метод:
Выберите Entry, которые возвращают ICollection. Поэтому я думаю, что можно сделать:
РЕДАКТИРОВАТЬ: использовать перегруженную версию SelectEntries (строка, строка)
var selection = zip1.SelectEntries("*.*", "FolderName");
for(x = selection.Count - 1; x >= 0; x--)
{
ZipEntry e = selection[x];
zip.RemoveEntry(e.FileName);
}
удаление цикла для всех записей в zipfile