Как передать объект в переменные модели c # - PullRequest
0 голосов
/ 13 июня 2019

Я читаю данные из базы данных 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
       .......

с этим кодом я передаю только первые данные, как я могу передать все данные, которые есть у объекта?

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Вы должны 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);
}
0 голосов
/ 13 июня 2019

Модель:

public class DashboardViewModel
{
    public string time { get; set; }
    public string valor { get; set; }
    public List<DashboardViewModel> lstDashboardviewModel {get; set; }
}

IActionResult:

public IActionResult Index()
{

    DashboardViewModel DatosParaMostrar = new DashboardViewModel();

    foreach(var data in ConsultaBD().Result){
        DatosParaMostrar.time = data.Values[0].ToString();
        DatosParaMostrar.valor = data.Values[1].ToString();
        DatosParaMostrar.lstDatosParaMostrar.Add(DatosParaMostrar);
    }        

    return View(DatosParaMostrar);
}

В вашей view выполните итерацию списка в model и выполните связывание соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...