uso from c# sql list visual-studio-2005 dbcommand

uso - select value from list linq c#



¿Cómo generar la lista<String> de la consulta SQL? (5)

Si tengo un DbCommand definido para ejecutar algo como:

SELECT Column1 FROM Table1

¿Cuál es la mejor manera de generar una List<String> de los registros devueltos?

No hay Linq, etc., ya que estoy usando VS2005.


Creo que esto es lo que estás buscando.

List<String> columnData = new List<String>(); using(SqlConnection connection = new SqlConnection("conn_string")) { connection.Open(); string query = "SELECT Column1 FROM Table1"; using(SqlCommand command = new SqlCommand(query, connection)) { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { columnData.Add(reader.GetString(0)); } } } }

No probado, pero esto debería funcionar bien.


Donde los datos devueltos es una cadena; podría convertir a un tipo de datos diferente:

(from DataRow row in dataTable.Rows select row["columnName"].ToString()).ToList();


O una lista anidada (está bien, el OP era para una sola columna y esto es para varias columnas ...):

//Base list is a list of fields, ie a data record //Enclosing list is then a list of those records, ie the Result set List<List<String>> ResultSet = new List<List<String>>(); using (SqlConnection connection = new SqlConnection(connectionString)) { // Create the Command and Parameter objects. SqlCommand command = new SqlCommand(qString, connection); // Create and execute the DataReader.. connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { var rec = new List<string>(); for (int i = 0; i <= reader.FieldCount-1; i++) //The mathematical formula for reading the next fields must be <= { rec.Add(reader.GetString(i)); } ResultSet.Add(rec); } }


Recorra los artículos y agregue a la colección. Puedes usar el método Add

List<string>items=new List<string>(); using (var con= new SqlConnection("yourConnectionStringHere") { string qry="SELECT Column1 FROM Table1"; var cmd= new SqlCommand(qry, con); cmd.CommandType = CommandType.Text; con.Open(); using (SqlDataReader objReader = cmd.ExecuteReader()) { if (objReader.HasRows) { while (objReader.Read()) { //I would also check for DB.Null here before reading the value. string item= objReader.GetString(objReader.GetOrdinal("Column1")); items.Add(item); } } } }


Si desea consultar todas las columnas

List<Users> list_users = new List<Users>(); MySqlConnection cn = new MySqlConnection("connection"); MySqlCommand cm = new MySqlCommand("select * from users",cn); try { cn.Open(); MySqlDataReader dr = cm.ExecuteReader(); while (dr.Read()) { list_users.Add(new Users(dr)); } } catch { /* error */ } finally { cn.Close(); }

El constructor del usuario haría todo el "dr.GetString (i)"