Como criar o ZipArchive a partir de arquivos na memória em C #?

De alguma forma, é possível criar um ZipArchive a partir dos arquivos na memória (e não no disco).

A seguir está o caso de uso: Vários arquivos são recebidos em umIEnumerable<HttpPostedFileBase> variável. Quero compactar todos esses arquivos usandoZipArchive. O problema é queZipArchive só permiteCreateEntryFromFile, que espera um caminho para o arquivo, onde apenas os arquivos estão na memória.

Pergunta, questão: Existe uma maneira de usar um 'fluxo' para criar a 'entrada' emZipArchive, para que eu possa colocar diretamente o conteúdo do arquivo no zip?

Não quero primeiro salvar os arquivos, criar o zip (a partir dos caminhos dos arquivos salvos) e depois excluir os arquivos individuais.

Aqui,attachmentFiles éIEnumerable<HttpPostedFileBase>

using (var ms = new MemoryStream())
{
    using (var zipArchive = new ZipArchive(ms, ZipArchiveMode.Create, true))
    {
        foreach (var attachment in attachmentFiles)
        {
            zipArchive.CreateEntryFromFile(Path.GetFullPath(attachment.FileName), Path.GetFileName(attachment.FileName),
                                CompressionLevel.Fastest);
        }
    }
    ...
}

questionAnswers(2)

yourAnswerToTheQuestion