2012-10-25 101 views
0

當我建立的項目,它有這樣的錯誤:「/」應用如何的DataTable轉換爲IList的C#

服務器錯誤。

傳遞到詞典中的模型項的類型 「System.Data.DataTable」的,但是這需要字典類型 的模型項「System.Collections.Generic.IList`1 [TLayout.Models.DemoTable] 」。

這是我的控制器

public ActionResult Index() 
     { 
      var dm = new DemoTable(); 
      string connstring = "Server=localhost;Port=5432;User Id=postgres;Password=123456;Database=test"; 
      NpgsqlConnection conn = new NpgsqlConnection(connstring); 
      conn.Open(); 
      string sql = "select * from demo"; 
      NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn); 
      ds.Reset(); 
      da.Fill(ds); 
      dt = ds.Tables[0]; 
      var demoid = dm.demoid.ToString(); 
      var demoname = dm.demoname; 
      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       List<DataTable> dtb = new List<DataTable>(); 
       demoid = dt.Rows[i]["demoid"].ToString(); 
       demoname = dt.Rows[i]["demoname"].ToString(); 
       dtb.Add(dt); 
      } 
      return View(dt); 
     } 

這是我的看法,數據顯示佈局:

foreach (var item in Model) 
{ 
    fields.Add(Html.X().ModelField().Mapping(@item.demoid.ToString()).Name("grid-alarm")); 
    fields.Add(Html.X().ModelField().Mapping(@item.demoname.ToString()).Name("grid-check")); 
} 

回答

1
var list = dt.AsEnumerable() 
      .Where(row => (int)row["demoid"] > 5) 
      .Select(row => new 
       { 
       demoid = Convert.ToInt32(row["demoid"]), 
       demoname = row["demoname"] != null ? 
          row["demoname"].ToString() : 
          String.Empty 
       }).ToList(); 

,也可以定義類:

public class myClass 
{ 
    public int demoid; 
    public string demoname; 
} 

然後:

List<myClass> list = dt.AsEnumerable() 
      .Where(row => (int)row["demoid"] > 5) 
      .Select(row => new myClass 
      { 
       demoid = Convert.ToInt32(row["demoid"]), 
       demoname = row["demoname"] != null ? 
          row["demoname"].ToString() : 
          String.Empty 
      }).ToList<myClass>();