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

后端 未结 3 1612
渐次进展
渐次进展 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:27

    The code you linked assumes the members are declared as properties. You didn't declare properties. You can make it work with Reflection:

    Imports System.Reflection
    ...
    
          Public Shared Function ConvertToDataTable(Of T)(ByVal list As IList(Of T)) As DataTable
            Dim table As New DataTable()
            Dim fields() As FieldInfo = GetType(T).GetFields()
            For Each field As FieldInfo In fields
              table.Columns.Add(field.Name, field.FieldType)
            Next
            For Each item As T In list
              Dim row As DataRow = table.NewRow()
              For Each field As FieldInfo In fields
                row(field.Name) = field.GetValue(item)
              Next
              table.Rows.Add(row)
            Next
            Return table
          End Function
    

提交回复
热议问题