Convert generic List/Enumerable to DataTable?

后端 未结 27 2223
臣服心动
臣服心动 2020-11-21 23:20

I have few methods that returns different Generic Lists.

Exists in .net any class static method or whatever to convert any list into a datatable? The only thing tha

27条回答
  •  名媛妹妹
    2020-11-21 23:49

    If you are using VB.NET then this class does the job.

    Imports System.Reflection
    ''' 
    ''' Convert any List(Of T) to a DataTable with correct column types and converts Nullable Type values to DBNull
    ''' 
    
    Public Class ConvertListToDataset
    
        Public Function ListToDataset(Of T)(ByVal list As IList(Of T)) As DataTable
    
            Dim dt As New DataTable()
            '/* Create the DataTable columns */
            For Each pi As PropertyInfo In GetType(T).GetProperties()
                If pi.PropertyType.IsValueType Then
                    Debug.Print(pi.Name)
                End If
                If IsNothing(Nullable.GetUnderlyingType(pi.PropertyType)) Then
                    dt.Columns.Add(pi.Name, pi.PropertyType)
                Else
                    dt.Columns.Add(pi.Name, Nullable.GetUnderlyingType(pi.PropertyType))
                End If
            Next
    
            '/* Populate the DataTable with the values in the Items in List */
            For Each item As T In list
                Dim dr As DataRow = dt.NewRow()
                For Each pi As PropertyInfo In GetType(T).GetProperties()
                    dr(pi.Name) = IIf(IsNothing(pi.GetValue(item)), DBNull.Value, pi.GetValue(item))
                Next
                dt.Rows.Add(dr)
            Next
            Return dt
    
        End Function
    
    End Class
    

提交回复
热议问题