while read executereader ejemplos data c# .net sqldatareader multiple-resultsets

c# - executereader - ¿Cómo leer varios resultados de SqlDataReader?



sqldatareader read (1)

Tengo un SP desde el que intento devolver 2 conjuntos de resultados y, en mi archivo .cs, estoy intentando algo como esto:

dr = cmd.ExecuteReader(); while (dr.Read()) { RegistrationDetails regDetails = new RegistrationDetails() { FName = dr["FName"].ToString(), LName = dr["LName"].ToString(), MName = dr["MName"].ToString(), EntityName = dr["EntityName"].ToString(),// in 2nd result set Percentage = dr["Percentage"].ToString()// in 2nd result set }; }

Sin embargo estoy recibiendo un

error: IndexOutOfRange {"EntityName"}


Aquí tiene una muestra sobre cómo manejar múltiples conjuntos de resultados con un lector de datos

static void RetrieveMultipleResults(SqlConnection connection) { using (connection) { SqlCommand command = new SqlCommand( "SELECT CategoryID, CategoryName FROM dbo.Categories;" + "SELECT EmployeeID, LastName FROM dbo.Employees", connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); do { Console.WriteLine("/t{0}/t{1}", reader.GetName(0), reader.GetName(1)); while (reader.Read()) { Console.WriteLine("/t{0}/t{1}", reader.GetInt32(0), reader.GetString(1)); } } while (reader.NextResult()); } }

La clave para recuperar datos de múltiples conjuntos de datos es usar reader.NextResult