How to fill a DataTable with a List(Of t) or convert a List(Of t) to a DataTable?

后端 未结 3 1655
渐次进展
渐次进展 2021-02-04 15:58

I have read many posts on this topic; among them and most recently .NET - Convert Generic Collection to Data Table. Unfortunately, all to no avail.

I have a generic coll

3条回答
  •  轮回少年
    2021-02-04 16:48

    Following @Hans Passant function if anyone is dealing with nullable types:

    For Each field As FieldInfo In fields
    ' Extra check for nullable
    If field.FieldType.AssemblyQualifiedName.Contains("System.Nullable") Then
        ' Insert proper type
        If field.FieldType.AssemblyQualifiedName.Contains("System.DateTime") Then
           table.Columns.Add(field.Name, Type.GetType("System.DateTime"))
        End If
    Else
        table.Columns.Add(field.Name, field.FieldType)
    End If
    Next
    

    Values:

    For Each item As T In list
    Dim row As DataRow = table.NewRow()
    For Each field As FieldInfo In fields
        ' Check if value is null
        If field.GetValue(item) is nothing Then
            Continue For
        End If
        row(field.Name) = field.GetValue(item)
    Next
    table.Rows.Add(row)
    Next
    

提交回复
热议问题