¿Cómo crear ZipArchive a partir de archivos en la memoria en C #?

¿De alguna manera es posible crear un ZipArchive a partir de los archivos en la memoria (y no en el disco).

El siguiente es el caso de uso: Se reciben múltiples archivos en unIEnumerable<HttpPostedFileBase> variable. Quiero comprimir todos estos archivos juntos usandoZipArchive. El problema es eseZipArchive solo permiteCreateEntryFromFile, que espera una ruta al archivo, donde solo tengo los archivos en la memoria.

Pregunta: ¿Hay alguna manera de usar una 'secuencia' para crear la 'entrada' enZipArchive, para que pueda poner directamente el contenido del archivo en el archivo zip?

No quiero guardar primero los archivos, crear el zip (desde las rutas de los archivos guardados) y luego eliminar los archivos individuales.

Aquí,attachmentFiles esIEnumerable<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);
        }
    }
    ...
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta