while read leer from example datos data c# ado.net dataset datareader

c# - leer - ¿Cómo puedo convertir DataSet a a DataReader?



getstring c# sqldatareader (6)

DataSet es un objeto en memoria desconectado. DataReader es un objeto unidireccional conectado.

Así que supongo que no es posible.

¿Es realmente necesario?

¿Cómo puedo convertir un DataSet a un DataReader?


No puede convertir un DataSet a un DbDataReader.

Sin embargo, puede crear un DbDataReader que leerá los resultados del DataSet llamando al método CreateDataReader en el DataSet.

Sin embargo, esto parece una cosa extraña de querer hacer. Simplemente puede iterar a través de los resultados contenidos en el DataSet usando la propiedad Tables de DataSet y la propiedad The Rows de DataTable. El uso de un DbDataReader le restringiría a reenviar solo el acceso a los resultados. El único beneficio que puedo ver al usar un DbDataReader sería si tuviera una llamada API para hacer una requerida como parámetro.

Si su DataSet es el resultado de un comando SELECT de una base de datos, debería poder obtener un DbDataReader llamando a DbCommand.ExecuteReader (). Esto cortará por completo el conjunto de datos y dará como resultado algo que es más eficiente.


Si desea iterar a través de DataSet, no necesita un DataReader. DataSet es un objeto en memoria desconectado, itere a través de él utilizando for-each:

foreach(var row in ds.Tables["YourTable"]) { var value = row.Field<int>("ID"); // etc }



DataSet tiene un método llamado CreateDataReader que creará un DataTableReader , pero no creo que pueda crear un DataReader .

DataSet.CreateDataReader


Puede usar el siguiente código para cambiar el conjunto de datos a DataReader :

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