2014-10-10 2 views
1

Я выполняю сценарий, в котором у меня есть DataTable, и в нем есть несколько типов столбцов, я должен отфильтровать тип данных нулевого значащего столбца, поэтому я могу назначить некоторое значение по умолчанию к нему прямо сейчас нечего ловить. Ниже приведен код для тестирования.DataType DataRow ArrayItem для значений NULL vb.net

Public Class Form1 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim table As DataTable = GetTable() 
    ' 
    ' We can instantiate a new object array and add it as a row. 
    ' 
    Dim row As DataRow = table.Rows(1) 
    For Each item As Object In row.ItemArray 
     If TypeOf item Is Integer Then 
      Console.WriteLine("Int: {0}", item) 
     ElseIf TypeOf item Is String Then 
      Console.WriteLine("String: {0}", item) 
     ElseIf TypeOf item Is DateTime Then 
      Console.WriteLine("DateTime: {0}", item) 
     ElseIf TypeOf item Is System.DBNull Then 
      Console.WriteLine("DBNULL {0}", item) 
     End If 
    Next 
End Sub 
Private Shared Function GetTable() As DataTable 
    ' Here we create a DataTable with four columns. 
    Dim table As New DataTable() 
    table.Columns.Add("ID", GetType(Integer)) 
    table.Columns.Add("Name", GetType(String)) 
    table.Columns.Add("Desc", GetType(String)) 
    table.Columns.Add("Date", GetType(DateTime)) 

    ' Here we add five DataRows. 
    table.Rows.Add(1, "Abc", "Cool Down", DateTime.Now) 
    table.Rows.Add(2, "Chenno", "Helifire", DBNull.Value) 
    Return table 
End Function 

End Class

Я обход только Null оцененной строки столбца, для даты Колонка она показывает "System.DBNull". Мне нужно выяснить тип данных этого столбца.

ответ

1

Я понял, как работать с конкретной колонкой, с двумя способами 1: Колонка Имени 2: Или индексом этого столбца и его ТипДанным

Dim row As DataRow = table.Rows(1) 
    Dim index As Integer = 0 
    For Each item As Object In row.ItemArray 
     If TypeOf item Is Integer Then 
      Console.WriteLine("Int: {0}", item) 
     ElseIf TypeOf item Is String Then 
      Console.WriteLine("String: {0}", item) 
     ElseIf TypeOf item Is DateTime Then 
      Console.WriteLine("DateTime: {0}", item) 
     ElseIf TypeOf item Is System.DBNull Then 
      Console.WriteLine("DBNULL {0}", item) 
     End If 
     If table.Columns(index).ColumnName.Contains("Date") Then 
      'Do the stuff {Method 1} 
     End If 
     If table.Columns(index).DataType.ToString() = "System.DateTime" Then 
      'Do The Stuff {Method 2} 
     End If 
     index = index + 1 
    Next 
Смежные вопросы