我使用 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/