在Linq Select from DbCommand.ExecuteReader中,没有记录被添加到DataTable



这段代码看起来应该可以工作,实际上它可以编译并运行。但是,来自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执行

相关内容

  • 没有找到相关文章

最新更新