将数据列表放在HttpResponseMessages Content .NET中

时间:2017-10-15 07:25:45

标签: c# asp.net asp.net-mvc

我有一个下载文本文件的api。 它工作正常,并在我的文本文件中保存数据。 result image

到目前为止,我已经完成了以下工作:

string data= "1";
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StringContent(data);

result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = "file.txt";
return result;

我想要的是什么:

我想在我的result.Content中放一个List。样本列表数据如下:

List<BlobUploadModel> list= new List<BlobUploadModel>();

BlobUploadModel models = new BlobUploadModel();
models.FileName = "1";
list.Add(models);
BlobUploadModel models1 = new BlobUploadModel();
models1.FileName = "2";
list.Add(models1);

在我的文本文件中,它显示:

result image want like this

怎么做?

2 个答案:

答案 0 :(得分:0)

你的问题有点不清楚我会回答我的想法,如果不是,请在评论中告诉我。

作为List<T>的内容是内存中的数据分离结构,无法保存在文本文件中。您可以在文件中保存的内容为string

有很多方法可以做到这一点,但这是您最简单的方法:

var dataAsString = string.Join("\n", list.Select(obj => obj.FileName));

您现在可以将dataAsString保存在文件中。

答案 1 :(得分:0)

示例图片中的文字文件没有显示列表 - 它只是显示一个文本文件,其中包含由换行符分隔的数据。

考虑到这一点,从列表中提取一些换行符分隔数据的一种方法可能是:

// The filenames from the list
var filenames = list.Select(model => model.FileName);

// Filenames joined together in a newline-separated string
var data = string.Join(Environment.NewLine, filenames);