当我构建项目时,它有这样的错误:
>应用程序中的服务器错误。传递到字典中的模型项是类型的 '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"));
}
答案 0 :(得分: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>();