首页 > 解决方案 > 如何将对象传递给c#模型的变量

问题描述

我正在从 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
       .......

使用这段代码我只传递第一个数据,我怎么能传递对象拥有的所有数据?

标签: c#.netasp.net-mvc

解决方案


await你应该ConsultaBD打电话:

public async Task<IActionResult> Index()
{
    DashboardViewModel DatosParaMostrar = new DashboardViewModel();

    var result = (await ConsultaBD()).First();
    DatosParaMostrar.time = result.Values[0][0].ToString();
    DatosParaMostrar.valor = result.Values[0][1].ToString();

    return View(DatosParaMostrar);
}

如果您想显示所有检索到的数据,而不仅仅是第一个,那么您应该填充您的列表DashboardViewModel并将其传递给您的视图:

public async Task<IActionResult> Index()
{        
    var results = await ConsultaBD();
    IList<DashboardViewModel> model = results.Select(x => new DashboardViewModel {
         time = x.Values[0][0].ToString(),
         valor = x.Values[0][1].ToString()
    }).ToList();        

    return View(model);
}

推荐阅读