Hoy he necesitado generar una cadena de texto separada por comas con todos los valores de las filas de una columna específica de un DataTable y tras realizar algunas búsquedas por internet, he localizado la forma de hacerlo en una simple línea de código C#.
Esto me ha servido para poder generar una consulta con un filtro IN en el que se incluyen todos esos valores. A continuación, os pongo un ejemplo para que sea más fácil de entender.
//Supongamos que tenemos el siguiente DataTable con las columnas ID y Nombre DataTable dt = new DataTable(); dt.Columns.Add("ID"); dt.Columns.Add("Nombre"); /* Añadimos algunos datos de ejemplo, en un caso real tendríamos el DataTable
* relleno con los datos de alguna tabla de nuestra base de datos. */ DataRow dr = dt.NewRow(); dr["ID"] = 1; dr["Nombre"] = "Coche"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = 2; dr["Nombre"] = "Moto"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["ID"] = 3; dr["Nombre"] = "Bus"; dt.Rows.Add(dr); /* Creamos una cadena de texto donde se concatenan, separados por coma,
* todos los valores de la columna ID. */
//La variable filtroIn tendría el siguiente valor: "1,2,3". string filtroIn = dt.AsEnumerable().Select(row => row["ID"].ToString()).Aggregate((s1, s2) => String.Concat(s1, "," + s2)); DataTable dtResultados = new DataTable(); string cadenaConexion = [cadena conexión a base de datos];
//Esta cadena tendría el siguiente valor SELECT * FROM table WHERE id_vehiculo IN (1,2,3)
string consulta = "SELECT * FROM table WHERE id_vehiculo IN (" + filtroIn + ")"; SqlDataAdapter da = new SqlDataAdapter(consulta, cadenaConexión); da.Fill(dtResultados);
Con el ejemplo completo ya tendríamos nuestra consulta con el filtro IN, que como habéis podido ver, una simple línea conseguimos pasar una columna de DataTable a cadena separada por comas.
string filtroIn = dt.AsEnumerable().Select(row => row["ID"].ToString()).Aggregate((s1, s2) => String.Concat(s1, "," + s2));
Espero que esta publicación os haya servido de ayuda. Agradecería un comentario o que la compartáis con alguien que también le pueda servir.
Muchas gracias, me ha servido mucho, me has resuelto el problema. Un besico.
Me alegro que te haya servido. Un beso
Muchas gracias, muy bien explicado un excelente Blog
Muchas gracias por tus palabras!! Me alegro de que te haya ayudado 😉