无法将数据表转换为 C# 中的列表
Posted
技术标签:
【中文标题】无法将数据表转换为 C# 中的列表【英文标题】:unble to convert data table to list in c# 【发布时间】:2020-02-07 12:26:10 【问题描述】:我想将数据表数据显示为 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);
型号
public class Trans_energycons_ReportModel
public DateTime DeviceDate get; set;
public double Units get; set;
【问题讨论】:
【参考方案1】:下面一行不起作用
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);
【讨论】:
感谢您的建议,但是返回 View(model);我也在这里出错。 针对您的问题进行了编辑,请查看更新后的答案。 将列表将List<Trans_energycons_ReportModel>
更改为ViewResult
或ActionResult
,如以下代码:
public ViewResult Report_trans_consumption(DateTime? fromDate, DateTime? toDate)
....
【讨论】:
以上是关于无法将数据表转换为 C# 中的列表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 json.net 将 c# 通用列表转换为 json?