3

我正在尝试将动态 LINQ 查询的结果放入 DataTable 中。尝试将查询直接放入 DataTable 会给我这个错误:

无法将“System.Linq.EnumerableQuery`1[DynamicClass1]”类型的对象转换为“System.Data.DataTable”类型。

我的代码是:

Dim query = tbl.AsEnumerable.AsQueryable.Select("new(it[""curr""] as Curry)")
Dim tbl As DataTable = query

我试过了:

Dim query As IEnumerable(Of DataRow) = tbl.AsEnumerable.AsQueryable.Select("new(it[""curr""] as Curry)").Cast(Of DataRow)()
Dim tbl1 As DataTable = query.CopyToDataTable

但这给了我:

无法将“DynamicClass1”类型的对象转换为“System.Data.DataRow”类型。

4

1 回答 1

0
    Public Shared Function ConvertIEnumerableToDataTableFromProperties(Of T)(ByVal list As IEnumerable(Of T)) As DataTable
        Dim table As New DataTable()
        Dim fields() As PropertyInfo = GetType(T).GetProperties()
        For Each field As PropertyInfo In fields
            table.Columns.Add(field.Name, field.PropertyType)
        Next
        For Each item As T In list
            Dim row As DataRow = table.NewRow()
            For Each field As PropertyInfo In fields
                row(field.Name) = field.GetValue(item)
            Next
            table.Rows.Add(row)
        Next
        Return table
    End Function
于 2021-12-01T11:42:20.097 回答