2015-05-27 6 views
2

Я хочу извлечь элементы столбца в DataTable и поместить их в список.Цитирование строк в DataTable и извлекающий элемент в C#

Это мой список и DataTable:

List<int> product1 = new List<int>(); 
DataTable table = this.IoC.Resolve<ISurveyResultsService>().GetProduct(studyYear, productName); 

Я хочу, чтобы петля корыта DataTable и поместить элементы в списке. Я судимый как это:

foreach (var row in table.Rows) 
{ 
    product.Add((int)row["StudyID"]); 
} 

Я получаю сообщение об ошибке «Невозможно применить индексирование с [] к выражению типа" объект»

Любой идее, как исправить это как можно более простыми?

+1

проверьте это http://stackoverflow.com/questions/1346132/how-do-extract-data-from-a-datatable – Alex

ответ

4

Вы должны бросить его в петле Еогеасп так:

foreach (DataRow row in table.Rows) 

Обратите внимание, что определение типа в Foreach действует как гипсе. Теперь у вас есть тип, который позволяет [].


Вы также можете использовать Linq, чтобы сделать его чище:

List<int> product = table.Rows.Cast<DataRow>().Select(row => (int)row["StudyID"]).ToList() 
+2

Небольшое изменение, которое мне нравится использовать, fwiw: '.Select (row => row.Field ("StudyID")) ' –

0

Вы конвертируете строку таблицы, как var object.Convert как DataRow попробовать

foreach(DataRow row in table.Rows) 
{ 
    product.Add((int)row["StudyID"]); 
} 
1
foreach (DataRow row in table.Rows) 
{ 
    product.Add((int)row["StudyID"]); 
} 

или

foreach (var row in table.AsEnumerable()) 
{ 
    product.Add((int)row["StudyID"]); 
} 

или

products = table.AsEnumerable().Select(row=>(int)row["StudyID"]).ToList(); 
0

Вот код

Person p=new Person(); 
    foreach(DataRow row in YourDataTable.Rows) 
    { 
    p.name = row["name"].ToString(); 
    p.description = row["description"].ToString(); 
    lst.Add(p); 

} 

LST является список < .Person>

0

Просто замените УАК строку с DataRow строки:

foreach (DataRow row in table.Rows) 
     { 
      product.Add((int)row["StudyID"]); 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^