2016-06-13 8 views
-1

Я использую цикл For Next для итерации по столбцам таблицы данных. Один из этих столбцов - столбец Booleans, для которого работает код For Next. Тем не менее, тот же код для итерации по столбцу целых чисел не работает (?).Итерация через столбец Integer в DataTable через следующий цикл?

Ошибка, которую я получаю. Я думаю, что понимаю, как я могу ее исправить? Или я могу просто не перебирать строку целых чисел с помощью следующего цикла? Должен ли я сначала сбрасывать этот столбец целых чисел в массив, а затем работать с ним? Я хочу, чтобы это было как можно проще? Большинство данных, с которыми я когда-либо работал бы в этом столбце, составляют 50 элементов.

ошибка, что я получаю при попытке итерации через колонку целочисленный:. «Не удается привести объект типа„System.Int32“к типу„System.Collections.IEnumerable“

For Each [boolean] In sourceTable.Rows(0).Item(0) 
      Try 
       bools(i) = sourceTable.Rows(i).Item(0) 
      Catch ex As Exception 
       MessageBox.Show(Me, ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error) 
      End Try 
      i += 1 
     Next 

     i = 0 
     For Each [integer] In sourceTable.Rows(0).Item(3) 
      Try 
       intVals(i) = sourceTable.Rows(i).Item(3) 
      Catch ex As Exception 
       MessageBox.Show(Me, ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error) 
      End Try 
      i += 1 
     Next 

ответ

1

правильный путь для цикла по коллекции Rows

Dim row As DataRow 
For Each row In sourceTable.Rows 
    Try 
     Dim boolValue as Bool = Convert.ToBoolean(row.Item(0)) 
     .... 

И второй петли

For Each row In sourceTable.Rows 
    Try 
     Dim intValue = Convert.ToInt32(row.Item(3)) 
     .... 

Чтобы использовать для каждого (или просто для), вам нужно иметь коллекцию для повторного перебора. Строки представляют собой коллекцию, в то время как строки (0) .Item (0) означает поле в позиции 0 в первой строке. Ясно, что это не коллекция.

+0

Хорошо, спасибо. Я догадываюсь, что добавил к моей путанице тот факт, что для следующего цикла, который я использовал для столбца данных Boolean, работал, когда я его закодировал. Так что, естественно, я подумал: «Хорошо, хорошо, если бы это сработало, то для того же кода для столбца данных Integer должен работать одинаково». Было бы полезно знать, почему это сработало для булевых, но не для целых. – busarider29

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