使用行索引vb.net

时间:2016-08-09 06:59:37

标签: vb.net linq list datatable

我有一个包含DisplayOrder列的DataTable。它将每个实体列的增量值保持1。在少数情况下,这种增量会打扰。现在我需要更新DataTable以将DisplayOrder列值保持为1。

我试过以下代码。但它会将所有行更新为1。

Dim i As Integer = 0

dtCustomers.Select("EntityID =" & EntityID).ToList().ForEach(Function(r) InlineAssignHelper(r("DisplayOrder"), i))

1 个答案:

答案 0 :(得分:1)

我假设您的InlineAssignHelper接受第二个参数并尝试设置DisplayOrder列的值。但是,由于您已经编写了不可能的代码,因为您为当前行而不是行本身传递了DisplayOrder列的VALUE。此外,你需要增加i的值,否则你总是在DisplayOrder调用之外设置固定的零值。

由于所有这些原因(以及更多的可读性),我建议保留ForEach列表扩展并使用传统的循环

Dim rows = dtCustomers.Select("EntityID =" & EntityID)
if rows IsNot Nothing Then
   For x = 0 to rows.Length - 1
      InlineAssignHelper(rows(x), "DisplayOrder", x+1))
      ' At this point you can also directly set the column without an helper function
      ' rows(x)("DisplayOrder") = x+1
   Next
End If

Public Sub InlineAssignHelper(row As DataRow, colName as String, value As Integer)
     row(colName) = value
End Sub