使用其行索引vb.net更新datatable行
我有一个列为使用其行索引vb.net更新datatable行,vb.net,linq,list,datatable,Vb.net,Linq,List,Datatable,我有一个列为DisplayOrder的数据表。它将每个实体列的值递增1。在少数情况下,该增量会干扰。现在我需要更新DataTable以将DisplayOrder列值保持1 我尝试了以下代码。但它将所有行更新1 Dim i As Integer = 0 dtCustomers.Select("EntityID =" & EntityID).ToList().ForEach(Function(r) InlineAssignHelper(r("DisplayOrder"), i)) 我假设
DisplayOrder
的数据表。它将每个实体列的值递增1。在少数情况下,该增量会干扰。现在我需要更新DataTable以将DisplayOrder
列值保持1
我尝试了以下代码。但它将所有行更新1
Dim i As Integer = 0
dtCustomers.Select("EntityID =" & EntityID).ToList().ForEach(Function(r) InlineAssignHelper(r("DisplayOrder"), i))
我假设您的InlineAssignHelper接受第二个参数,并尝试设置列DisplayOrder的值。但在编写这段代码时,这是不可能的,因为您传递的是当前行的列DisplayOrder的值,而不是行本身的值。此外,您需要增加i的值,否则在调用DisplayOrder之外,您总是将值设置为0 出于所有这些原因(也为了更具可读性),我建议离开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
有人能帮我一下吗?你能解释一下这个代码错在哪里并为InlineAssignHelper添加代码吗?使用上面的代码,“DisplayOrder”的所有行值都会更改为1如果看不到InlineAssignHelper的代码,很难说。你试过下面我的答案了吗?谢谢你的帮助!