如何使用 vb.net 更改数据表中的列数据类型

Dal*_*ino 3 vb.net datatable datatables blueprism

如何从 VB.NET 中的输入数据表(已填充)更改数据列的数据类型,然后我会将代码放在 Blue Prism Code Stage 中输入:

  1. 我要更改数据类型的字段(列)的名称

  2. 我要转换的数据类型

  3. 输入集合(数据表)

例子:

Dim InputDT As New DataTable
InputDT.Columns.Add(New DataColumn("test"))
dt.Columns("test").DataType = GetType(Date)
Run Code Online (Sandbox Code Playgroud)

谢谢

Ahm*_*eed 8

如果 DataTable 已经填充了数据,则不能更改其任何列的类型。如果您尝试这样做,您将收到ArgumentException一条非常简单的消息:

一旦有数据,就不能更改列的数据类型。

一个好的替代方法是创建一个新的 DataTable(或克隆现有的 DataTable),更改列类型,然后用旧 DataTable 中的数据填充它。

这样的事情应该工作:

Dim InputDT As New DataTable
InputDT.Columns.Add(New DataColumn("test"))
InputDT.Rows.Add("1/1/2018")

Dim clonedDT As DataTable = InputDT.Clone()
clonedDT.Columns("test").DataType = GetType(Date)
For Each row As DataRow In InputDT.Rows
    clonedDT.ImportRow(row)
Next
Run Code Online (Sandbox Code Playgroud)

请注意,为了使其工作,该列中的数据必须对新类型有效。

编辑:

要处理现有值无法转换为新类型的情况,您可以使用Try.. Catch如下语句:

' ...
Try
    For Each row As DataRow In InputDT.Rows
        clonedDT.ImportRow(row)
    Next
Catch ex As ArgumentException
    ' An error occurred, use 'ex.Message' to display the error message. Example:
    Console.WriteLine(ex.Message)
End Try
Run Code Online (Sandbox Code Playgroud)