Я думаю, что единственный способ - это заархивировать все файлы, а затем загрузить один zip-файл. Я думаю, вы можете использовать пакет dotnetzip, потому что он прост в использовании.
Одним из способов является то, что вы можете сначала сохранить свои файлы на диске, а затем передать в архив zip для загрузки. Другой способ, вы можете сжать их в памяти, а затем загрузить файл в поток
public ActionResult Download()
{
using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(Server.MapPath("~/Directories/hello"));
MemoryStream output = new MemoryStream();
zip.Save(output);
return File(output, "application/zip", "sample.zip");
}
}