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.