0

csvファイルをデータテーブルにインポートしますが、残念ながら、数値を含む列でもデータを文字列列に入れます。

したがって、いくつかの列の形式を (他の方法がない限り) datetime、integer、または double に変換する必要があるため、次のコードを記述しました。

Public Sub ChangeFieldType(ByRef dataTable As DataTable, ByVal fieldIndex As Integer, ByVal newType As Type)
    Dim newDataTable As DataTable = dataTable.Clone

    newDataTable.Columns(fieldIndex).DataType = newType
    For Each row As DataRow In dataTable.Rows
        newDataTable.ImportRow(row)
    Next
    dataTable = newDataTable
End Sub

ただし、文字列形式が vbnullstring の空のセルがいくつかあります。私の質問は、私のコードよりも簡単な方法があるかどうかです。そうでない場合は、空のセルを変換するよりも速い方法があります。

Public Sub ChangeFieldType(ByRef dataTable As DataTable, ByVal fieldIndex As Integer, ByVal newType As Type)
    Dim newDataTable As DataTable = dataTable.Clone

    newDataTable.Columns(fieldIndex).DataType = newType
    For Each row As DataRow In dataTable.Rows
        If row(fieldIndex) = vbNullString Then
            row(fieldIndex) = Nothing
        End If
        newDataTable.ImportRow(row)
    Next
    dataTable = newDataTable
End Sub

これは非常に遅いためです。

ありがとう

4

2 に答える 2