vb.net - 从 System.Linq.EnumerableQuery 转换为 System.Data.Datatable(使用动态 LINQ)

标签 vb.net linq dynamic exception-handling casting

我正在尝试将动态 LINQ 查询的结果放入数据表中。尝试将查询直接放入数据表中会出现此错误:

Unable to cast object of type 'System.Linq.EnumerableQuery`1[DynamicClass1]' to type '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

但这给了我:

Unable to cast object of type 'DynamicClass1' to type 'System.Data.DataRow'.

最佳答案

    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

关于vb.net - 从 System.Linq.EnumerableQuery 转换为 System.Data.Datatable(使用动态 LINQ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363811/

相关文章:

c# - 如何检查列表中具有唯一组合的多个属性,其中属性名称可作为单独的集合使用。 [C#]

xml - 使用 XSL 生成在同一脚本中执行的动态 XSL?

java - 如何在flex中创建动态数据网格

jquery - 在页面的 ajax 加载部分上对 Video.js 播放器进行多次初始化

C# linq 查询过滤子集合

c# - 解决linq表达式错误

C# 函数使用扩展函数但 VB 等效函数不使用?

vb.net - 如何在 VB.NET 中填充组合框

vb.net - 使类可序列化

vb.net - 反射(reflection):如果该属性具有非公共(public)(私有(private)/ protected )Setter,如何从属性信息对象中查找?