2016-06-13 78 views
-1

我正在使用For Next循環遍歷數據表的列。其中的一列是布爾值列,For Next代碼適用於此列。但是,迭代整數列的相同代碼不起作用(?)。通過For Next循環遍歷DataTable中的Integer列?

我得到的錯誤我想我明白,但我該如何解決?或者我可以簡單地用For Next Loop循環遍歷整行?我是否首先需要將該整列轉儲到數組中,然後使用它?我想盡可能簡單嗎?我將在本專欄中使用的大多數數據是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

正確的方法是遍歷行集合

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)) 
     .... 

要使用For Each(或簡單的For),您需要有一個集合來迭代。行是一個集合,而行(0).Item(0)表示位於第一行0位置的字段。顯然這不是一個集合。

+0

好的,謝謝。我想我的疑惑是,我使用布爾數據列的For Next Loop工作,因爲我編碼它。所以很自然地,我的想法是,「好的,如果那樣工作,那麼爲Integer數據列做相同的代碼應該以相同的方式工作。」瞭解它爲什麼適用於布爾值而不是整數值會有幫助。 – busarider29