【发布时间】:2019-06-13 22:02:34
【问题描述】:
我正在从 InfluxDB 数据库中读取数据。此查询的结果是对象类型,我需要将此数据传递给具有两个变量的模块。
型号:
public class DashboardViewModel
{
public string time { get; set; }
public string valor { get; set; }
}
我在其中执行查询的异步任务:
public async Task<List<Serie>> ConsultaBD()
{
var _client = new InfluxDb("http://host:8086/", "***", "***");
List<Serie> series = await _client.QueryAsync("dbName", "SELECT T_PV FROM TFA WHERE time >= '2019-05-21' and time < '2019-05-22'");
return series;
}
我将数据传递给模型的 IActionResult:
public IActionResult Index()
{
DashboardViewModel DatosParaMostrar = new DashboardViewModel();
DatosParaMostrar.time = ConsultaBD().Result[0].Values[0][0].ToString();
DatosParaMostrar.valor = ConsultaBD().Result[0].Values[0][1].ToString();
return View(DatosParaMostrar);
}
返回的数据“QueryBD().Result[0].Values”是这样一个对象:
data->
[0]->
[0]= {21/05/2019 0:00:03}
[1]= 586.5
[1]->
[0]= {21/05/2019 0:00:03}
[1]= 575.4
[2]->
[0]= {21/05/2019 0:00:03}
[1]= 595.5
[3]->
[0]= {21/05/2019 0:00:03}
[1]= 584.25
[4]->
[0]= {21/05/2019 0:00:03}
[1]= 583.625
.......
使用这段代码我只传递第一个数据,我怎么能传递对象拥有的所有数据?
【问题讨论】:
-
如果您想获取所有数据,那么您可能应该将您的模型设为
list,如果是这样,请遍历您的result并分配给您的模型列表。 -
ConsultaBD()将返回Serie的集合。在您的代码中,您调用ConsultaDB两次并检索相同的结果。这将命中数据库两次。相反,将结果存储在内存中(即var result = await ConsultaDB(),然后按照@NnN 的建议,遍历列表并构建您的模型。
标签: c# .net asp.net-mvc