2011-07-07 25 views

Odpowiedz

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

[Edytuj: dodać odniesienie do System.Data.DataSetExtensions do projektu, czy to nie kompiluje]

+5

AsEnumerable() działa na DataTable jako dobrze. var list = dataTable.AsEnumerable(). Wybierz (r => r.Field (columnName)). ToList(); –

+0

Jeśli 'DataTable.AsEnumerable()' nie skompiluje, dodaj odwołanie do System.Data.DataSetExtensions do swojego projektu. – Brk

+0

Co zrobić, jeśli nie znasz nazwy kolumny "columnName"? – chiapa

6

Tutaj jesteś.

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

Jeśli potrzebujesz pierwszą kolumnę

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

Czy to, co trzeba?

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

Twoja odpowiedź jest prawie poprawna, z wyjątkiem pytania wymagającego nazw lub 'List ' – AaA

70

Spróbuj tego:

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

Czy ktoś inny otrzymuje błąd ReadOnly w kolumnach? – InteXX

+0

jak odzyskać dane z kolumny "nazwa"? – JerryGoyal

3

robię próbki dla ciebie, i mam nadzieję, że to jest pomocny ...

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(); 
    } 
Powiązane problemy