为了账号安全,请及时绑定邮箱和手机立即绑定

使用 CSVHelper 从 HttpResponseMessage 解析 CSV

使用 CSVHelper 从 HttpResponseMessage 解析 CSV

C#
幕布斯7119047 2021-11-28 20:03:44
目前,我使用两步法从 Web Api 获取数据并将 CSV 记录反序列化为对象。var response = await httpClient.GetAsync(queryString);using (var reader = new StreamReader(await response.Content.ReadAsStreamAsync())){    var csvr = new CsvReader(reader);    var responseValue = csvr.GetRecords<TrainingDataSetData>().ToList();    result.Readings.AddRange(responseValue);}如何优化此代码?
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

如果您试图避免创建中间体MemoryStream- 您可以使用GetStreamAsyncon 方法HttpClient,它应该返回原始数据,NetworkStream因为您直接传递给 CsvHelper,而不是ReadAsStreamAsync,这将默认MemoryStream在返回之前将完整响应读入 a 。


using (var reader = new StreamReader(await httpClient.GetStreamAsync(queryString)))

{

    var csvr = new CsvReader(reader);

    var responseValue = csvr.GetRecords<TrainingDataSetData>().ToList();

    result.Readings.AddRange(responseValue);

}

如果您仍然需要访问 ,则HttpResponseMessage可以通过使用 来达到相同的效果HttpCompletionOption.ResponseHeadersRead,它不会在返回之前缓冲响应。


var response = await httpClient.GetAsync(queryString, HttpCompletionOption.ResponseHeadersRead);

至于这是否实际上更有效 - 这需要在您的特定环境中进行基准测试来决定,因为它可能取决于响应的大小、网络速度等。


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信