Невозможно преобразовать таблицу данных в список в c# - PullRequest
0 голосов
/ 07 февраля 2020

Я хочу показать данные в html, чтобы преобразовать данные в список. но получение erorr не может неявно преобразовать тип 'System.web. mvc .viewresult' в system.collection.genericlist

 public ViewResult Report_trans_consumption(DateTime? fromDate, DateTime? toDate)
        {
            ViewBag.fromDate = fromDate;
            ViewBag.toDate = toDate;
            List<Trans_energycons_ReportModel> model = null;
            using ("constr"))
            { 
                con.Open();
                SqlCommand cmd_get_transformer_consumption = new SqlCommand(@"SELECT 
    Date,units
    FROM [Total_Power]) desc", con);
                SqlDataAdapter da_get_trans_consumption = new SqlDataAdapter(cmd_get_transformer_consumption);
                DataTable dt = new DataTable();
                da_get_trans_consumption.Fill(dt);
                Trans_energycons_ReportModel m =new Trans_energycons_ReportModel();
                foreach (DataRow row in dt.Rows)
                {
                    string deviceDate = row["Date"].ToString();
                    string units = row["Units"].ToString();
                    m.DeviceDate =Convert.ToDateTime(deviceDate);
                    m.Units =Convert.ToDouble(units);
                    model.Add(m);//getting error here
                }
            }
            return View(model); 
        }
    }

Model

  public class Trans_energycons_ReportModel
    {
        public DateTime DeviceDate { get; set; }
        public double Units { get; set; }

    }

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вам нужно изменить List<Trans_energycons_ReportModel> на ViewResult или ActionResult

public ViewResult Report_trans_consumption(DateTime? fromDate, DateTime? toDate)
{
....
}

1 голос
/ 07 февраля 2020

Нижняя строка не будет работать

model = dt.AsEnumerable().ToList();

Вы должны вручную сопоставить свои свойства из таблицы данных, например

 foreach(DataRow row in dt.Rows)
 { 
     string deviceDate = row["DeviceDate"].ToString();
     string units = row["Units"].ToString();
     // convert your data and assign them in model and then use that model
 }

Редактировать:

Ваш тип возврата: List<Trans_energycons_ReportModel>

, поэтому вы должны вернуть return model; вместо return View(model);

...