No dudes en divulgar nuestro espacio y códigos con tus amigos, necesitamos de tu ayuda para hacer crecer esta comunidad.
Solución:
Puede usar Linq para DataTable:
var ids = dt.AsEnumerable().Select(r => r.Field("id")).ToList();
ACTUALIZACIÓN: Sin Linq
List ids = new List(dt.Rows.Count);
foreach(DataRow row in dt.Rows)
ids.Add((int)row["id"]);
Nota para la eficiencia es mejor usar row[index]
en vez de row[columnName]
. El primero solo obtiene columna por índice de las columnas array. Este último obtiene el índice de columna del diccionario interno que asigna nombres a índices, y solo luego obtiene columna por índice.
Otra cosa a tener en cuenta es la inicialización de la capacidad de la lista con el recuento de filas. Si no vas a hacer esto, entonces interno array de la lista se volverá a crear y se copiará muchas veces (depende del número de filas).
Y lo último que hay que decir: la forma más eficiente con una tabla enorme (si es posible) es filtrar datos en el lado del servidor.