2011-07-07 18 views

Respuesta

35
var list = dataTable.Rows.OfType<DataRow>() 
    .Select(dr => dr.Field<string>(columnName)).ToList(); 

[Editar : Agregar una referencia a System.Data.DataSetExtensions a su proyecto si esto no se compila]

+5

AsEnumerable() funciona en un DataTable también. var list = dataTable.AsEnumerable(). Seleccione (r => r.Field (columnName)). ToList(); –

+0

Si 'DataTable.AsEnumerable()' no se compila, agregue una referencia a System.Data.DataSetExtensions a su proyecto. – Brk

+0

¿Qué sucede si no conoce 'columnName'? – chiapa

6

Aquí tienes.

  DataTable defaultDataTable = defaultDataSet.Tables[0]; 
      var list = (from x in defaultDataTable.AsEnumerable() 
        where x.Field<string>("column1") == something 
        select x.Field<string>("column2")).ToList(); 

Si necesita la primera columna

  var list = (from x in defaultDataTable.AsEnumerable() 
        where x.Field<string>(1) == something 
        select x.Field<string>(1)).ToList(); 
5

Es esto lo que necesita?

DataTable myDataTable = new DataTable(); 
List<int> myList = new List<int>(); 
foreach (DataRow row in myDataTable.Rows) 
{ 
    myList.Add((int)row[0]); 
} 
+0

Su respuesta es casi correcta excepto que la pregunta es pidiendo nombres o 'List ' – AaA

70

Prueba esto:

static void Main(string[] args) 
{ 
    var dt = new DataTable 
    { 
     Columns = { { "Lastname",typeof(string) }, { "Firstname",typeof(string) } } 
    }; 
    dt.Rows.Add("Lennon", "John"); 
    dt.Rows.Add("McCartney", "Paul"); 
    dt.Rows.Add("Harrison", "George"); 
    dt.Rows.Add("Starr", "Ringo"); 

    List<string> s = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); 

    foreach(string e in s) 
     Console.WriteLine(e); 

    Console.ReadLine(); 
} 
+0

¿Alguien más está obteniendo un error de ReadOnly en Columns? – InteXX

+0

cómo recuperar datos de una columna "nombre"? – JerryGoyal

3

hago una muestra para usted, y espero que esto sea útil ...

static void Main(string[] args) 
    { 
     var cols = new string[] { "col1", "col2", "col3", "col4", "col5" }; 

     DataTable table = new DataTable(); 
     foreach (var col in cols) 
      table.Columns.Add(col); 

     table.Rows.Add(new object[] { "1", "2", "3", "4", "5" }); 
     table.Rows.Add(new object[] { "1", "2", "3", "4", "5" }); 
     table.Rows.Add(new object[] { "1", "2", "3", "4", "5" }); 
     table.Rows.Add(new object[] { "1", "2", "3", "4", "5" }); 
     table.Rows.Add(new object[] { "1", "2", "3", "4", "5" }); 

     foreach (var col in cols) 
     { 
      var results = from p in table.AsEnumerable() 
          select p[col]; 

      Console.WriteLine("*************************"); 
      foreach (var result in results) 
      { 
       Console.WriteLine(result); 
      } 
     } 


     Console.ReadLine(); 
    } 
Cuestiones relacionadas