質問に対する 2018/11/06 19:25 の私のコメント・・・「複数のCSVファイルをzip」にする方法は分かっていて、その .zip ファイルをどのようにダウンロードさせるかという話・・・と理解してレスします。
FileResultという方法が候補として挙がっていますが
ということから ASP.NET MVC の話で、たぶん、FileResult でググるとヒットする、以下の(もしくはこれと同等な内容の)記事を参考にしてるのではないかと思います。
FileResultでzipファイルを返す
https://qiita.com/mistolteen/items/076194fa0706d601acd9
ご存知かもしれませんが、予備知識として上の記事の return File(...);
のことを書いておくと・・・
return File(...);
のヘルパーメソッド File は、FileResult クラスを継承した FilePathResult, FileContentResult, FileStreamResult 派生メソッドのいずれかを呼び出します。それらの使い分けは以下の通り。
FilePathResult: コンテンツが既存のファイルとして提供される。
FileStreamResult: コンテンツがストリームとして提供される。
FileContentResult: コンテンツがバイト配列として提供される。
上記のどれを呼び出すかは return File(...);
の引数によります。上の記事の例では第一引数がストリームなので FileStreamResult が呼び出されます。
FileStreamResult は何をするかと言うと、FileStream.Read メソッドでストリームからバイト列を取得し、それを HttpReponseBase.OutputStream.Write メソッドを使って出力ストリームに書き出すという操作を行います。
同時に、応答ヘッダに Content-Disposition と Content-Type を適切に設定します。
上記のことを踏まえて・・・
その他でいうと具体的にどういった方法がありますか?
なぜ「その他」が必要なのか分かりませんが、よほどの理由がない限り無いと言っていいと思います。
上の記事のようにすれば、質問者さんの要件「メモリ上で全て行いたい」ということは MemoryStream を使って満足していますし、MemoryStream の内容をダウンロードするのに FileStreamResult 以外を使う理由はないはずです。
どうしてもということなら、自力でコードを書くということになりますが、結局は FileStreamResult が行っていることと同じことをコーディングすることになり、何の意味もなさそうです。