无法将数据表转换为 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&lt;Trans_energycons_ReportModel&gt;

所以你应该返回return model; 而不是return View(model);

【讨论】:

感谢您的建议,但是返回 View(model);我也在这里出错。 针对您的问题进行了编辑,请查看更新后的答案。 将列表更改为ActionResult【参考方案2】:

List&lt;Trans_energycons_ReportModel&gt; 更改为ViewResultActionResult,如以下代码:

public ViewResult Report_trans_consumption(DateTime? fromDate, DateTime? toDate)

 ....

【讨论】:

以上是关于无法将数据表转换为 C# 中的列表的主要内容,如果未能解决你的问题,请参考以下文章

无法将char转换为c#中类库中的项目

C#中怎么将string转换成int型

如何将 C# 多维列表转换为 VB.Net

如何使用 json.net 将 c# 通用列表转换为 json?

如何使用 json.net 将 c# 通用列表转换为 json?

将数据转换为 spark scala 中的类对象列表