2016-08-09 8 views
1

У меня есть DataTable с колонкой DisplayOrder. Он поддерживает увеличивающиеся значения на 1 на единицу столбца. В нескольких сценариях этот прирост будет нарушать. Теперь мне нужно обновить DataTable для поддержания значения столбца DisplayOrder на 1.Обновление строки данных с индексом строки vb.net

Я пробовал следующий код. но он обновляет все строки на 1.

Dim i As Integer = 0 

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

Может кто-то пожалуйста, помогите мне в этом. –

+0

Можете ли вы объяснить, где этот код является неправильным, и добавить код для InlineAssignHelper? – Steve

+0

с использованием вышеуказанного кода все значения строк «DisplayOrder» изменены на 1 –

ответ

1

Я предполагаю, что ваш InlineAssignHelper принимает второй параметр и пытается установить значение для DisplayOrder столбца. Но поскольку вы написали этот код, это невозможно, потому что вы передаете значение VALUE столбца DisplayOrder для текущей строки, а не самой строки. Кроме того, вам нужно увеличить значение 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 
Смежные вопросы