C# 如何将数据集a转换为数据读取器?

C# 如何将数据集a转换为数据读取器?,c#,ado.net,dataset,datareader,C#,Ado.net,Dataset,Datareader,如何将数据集转换为DataReader?DataSet有一个名为CreateDataReader的方法,它将创建一个DataTableReader,但我认为您不能创建一个DataReader 数据集是一个断开连接的内存对象。DataReader是一个连接的单向对象 所以我想这是不可能的 真的需要它吗?如果你想通过数据集进行迭代,你不需要数据阅读器。DataSet是一个断开连接的内存对象,因此使用for each对其进行迭代: foreach(var row in ds.Tables["YourT

如何将数据集转换为DataReader?

DataSet
有一个名为
CreateDataReader
的方法,它将创建一个
DataTableReader
,但我认为您不能创建一个
DataReader


数据集是一个断开连接的内存对象。DataReader是一个连接的单向对象

所以我想这是不可能的


真的需要它吗?

如果你想通过数据集进行迭代,你不需要数据阅读器。DataSet是一个断开连接的内存对象,因此使用for each对其进行迭代:

foreach(var row in ds.Tables["YourTable"])
{
     var value = row.Field<int>("ID"); // etc
}
foreach(ds.Tables[“YourTable”]中的变量行)
{
var value=row.Field(“ID”);//等
}

DataSet和DataTable都公开了一个方法CreateDataReader,该方法 创建DataTableReader。 检查这些链接-


无法将数据集转换为DbDataReader

但是,您可以通过调用数据集上的CreateDataReader方法来创建一个DbDataReader,该DbDataReader将从数据集读取结果

然而,这似乎是一件奇怪的事情。您可以使用DataSet的Tables属性和DataTable的Rows属性简单地迭代数据集中包含的结果。使用DbDataReader将限制您仅转发对结果的访问。我从使用DbDataReader中看到的唯一好处是,如果您有一个API调用来进行所需的参数调用


如果数据集是来自数据库的SELECT命令的结果,则应该能够通过调用DbCommand.ExecuteReader()来获取DbDataReader。这将完全删除数据集并产生更高效的结果。

您可以使用以下代码将数据集更改为
DataReader

DataTableReader rd = ds.Tables[0].CreateDataReader();

你不能。如果你想要更多的解释,请提供更多的信息。我觉得你试图做的事情有缺陷。你想在更高的层次上做什么从数据源读取仅向前的行流。与数据库“连接”无关。