Изменение значений столбца в datatable в vb.net
Я хочу пройтись по циклу данных и изменить значения определенного столбца в этой таблице данных.
например: база данных возвращает Request_ID
, Desc
, Date
а также Status_Ind
, Status_Ind
столбец содержит целочисленные значения. Я не хочу показывать целочисленные значения пользователю. Я хочу преобразовать это в строковое значение на основе целочисленных значений, возвращаемых в этих столбцах.
if Status_Ind = 1 then
'the values changes to Published
2 ответа
Решение
Вы можете сделать это, создав еще один столбец:
Dim dt As New DataTable
dt.Columns.Add(New DataColumn("status_int", GetType(Int32)))
dt.Columns.Add(New DataColumn("status_str", GetType(String)))
'add example row - not publised
Dim newDr0 As DataRow = dt.NewRow
newDr0(0) = 0
dt.Rows.Add(newDr0)
'add example row - publised
Dim newDr1 As DataRow = dt.NewRow
newDr1(0) = 1
dt.Rows.Add(newDr1)
For Each dr As DataRow In dt.Rows
Select Case dr(0)
Case 1
dr(1) = "Published"
Case Else
dr(1) = "Not published"
End Select
Next
For Each dr In dt.Rows
Console.WriteLine(dr(0).ToString + " " + dr(1).ToString)
Next
Предполагая, что ваш DataTable определен так:
Dim dt As DataTable
Сначала вам нужно добавить новый столбец в DataTable для хранения статуса:
dt.Columns.Add("Status", Type.GetType("System.String"))
Теперь переберите DataTable и обновите столбец состояния:
For Each dr As DataRow In dt.Rows
Select Case CInt(dr.Item("Status_Ind"))
Case 1
dr.Item("Status") = "Published"
Case 2
dr.Item("Status") = "Some other Status"
Case Else
dr.Item("Status") = "Unknown"
End Select
Next
Затем вы можете удалить целочисленный столбец:
dt.Columns.Remove("Status_Ind")