【问题标题】:Iterate through Integer column in DataTable via For Next loop?通过 For Next 循环遍历 DataTable 中的整数列?
【发布时间】:2016-06-13 19:50:43
【问题描述】:

我正在使用 For Next 循环来遍历数据表的列。其中一列是布尔值列,For Next 代码适用于此。但是,迭代整数列的相同代码不起作用(?)。

我认为我理解的错误,但我该如何解决?或者我可以简单地不使用 For Next 循环遍历整数行吗?我是否首先需要将该列整数转储到一个数组中,然后再使用它?我想让这个尽可能简单吗?我在本专栏中使用的最多数据是 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

【问题讨论】:

    标签: vb.net for-loop datatable


    【解决方案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))
          ....
    

    要使用 For Each(或简单的 For),您需要有一个可以迭代的集合。 Rows 是一个集合,而 Rows(0).Item(0) 表示第一行中位置 0 的字段。显然这不是一个集合。

    【讨论】:

    • 好的,谢谢。我想让我感到困惑的是,我用于布尔数据列的 For Next 循环在我编码时工作。所以很自然地,我的想法是,“好吧,如果那样工作,那么为整数数据列执行相同的代码应该以相同的方式工作”。知道为什么它适用于布尔值而不适用于整数会很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2017-05-14
    相关资源
    最近更新 更多