我有一个包含DisplayOrder
列的DataTable。它将每个实体列的增量值保持1。在少数情况下,这种增量会打扰。现在我需要更新DataTable以将DisplayOrder
列值保持为1。
我试过以下代码。但它会将所有行更新为1。
Dim i As Integer = 0
dtCustomers.Select("EntityID =" & EntityID).ToList().ForEach(Function(r) InlineAssignHelper(r("DisplayOrder"), i))
答案 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