这段代码看起来应该可以工作,实际上它可以编译并运行。但是,来自cmd.ExecuetReader()
的记录(确实有记录)没有按预期添加到dt
。有人知道遗漏了什么吗?
DataTable dt = new DataTable();
cmd.Connection.Open();
cmd.ExecuteReader().Cast<DbDataRecord>().Cast<DataRow>().Select(r=>dt.Rows.Add(r.ItemArray));
或者,是否有更直接的方法来做到这一点,当然是使用linq:)
Linq懒惰。当你真正访问它的数据时,它才会被执行。
cmd.Connection.Open();
var data = cmd.ExecuteReader().Cast<DbDataRecord>().Cast<DataRow>().Select(r=>r.ItemArray).ToList();
DataTable dt = new DataTable();
foreach(var d in data)
dt.Rows.Add(d);
调用ToList()
强制linq执行