c# - 如何将 IQueryable 转换为 DataTable

标签 c# asp.net visual-studio-2010 linq

我使用 LinQ 编写了查询,并使用了 CopyToDataTable 方法。在那一行显示从我的数据库类型到 System.Data.DataRow 的隐式转换类型错误。

var query = from i in dbContext.Personaldetails
            where i.ID == 1
            select i;

            return query.CopyToDataTable();

有什么建议吗?

最佳答案

CopyToDataTable 需要收集 DataRow 对象。请参阅如何:Implement CopyToDataTable Where the Generic Type T Is Not a DataRow来解决这个问题。

更新:如果您的实体具有可空字段,您可以修改 ObjectShredder.ExtendTable 方法。查找新列添加到表的位置,并删除第二个参数,该参数提供列中的数据类型(DataColumn 类不支持可为空的数据类型):

foreach (PropertyInfo p in type.GetProperties())
{
    if (!_ordinalMap.ContainsKey(p.Name))
    {
        DataColumn dc = table.Columns.Contains(p.Name) ? table.Columns[p.Name]
            // do not provide column type
            : table.Columns.Add(p.Name); 

        _ordinalMap.Add(p.Name, dc.Ordinal);
    }
}

关于c# - 如何将 IQueryable 转换为 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10618605/

相关文章:

c# - Json.net DeserializeAnonymousType 返回 BigInteger 而不是 UInt64

java - 使用文本文件自动填写网络表单

C# 为什么我不能拆分字符串?

c# - 使用 FindControl 检索 ListView

asp.net - SQL Server 连接到另一个 SQL Server?

c++ - 捕获 _this_ 的 lambda 中的函数名称解析

visual-studio-2010 - 在VS 2010创建的安装程序上不断弹出Visual C++ 2010运行时库的先决条件

c# - 用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES) in Visual Studio

c# - 在 Visual Studio 2010 中将 Excel 数据导入 DataGridView

c# - 如何将值添加到 list<valuepair> 对象