Columna de DataTable a cadena separada por comas

Esteban Sierra

3 marzo, 2020

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));
Tu apoyo cuenta: comparte este contenido y cuéntame en los comentarios qué te ha parecido

4 comentarios en «Columna de DataTable a cadena separada por comas»

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.