我想将我的Linq结果放在数据集/数据表中。我目前遇到的问题是查询变量没有属性copyToDataTable。我收到了这个错误。
类型'x.v_Checklist'不能用作类型参数'T' 通用类型或方法 “System.Data.DataTableExtensions.CopyToDataTable
这是我的代码
protected void btnExcelCheckListDownload_Click(object sender, EventArgs e)
{
DataSet dsTest = new DataSet();
var db = new BillingEntities();
var query = (from u in db.v_Checklist select u).AsQueryable();
DataTable dt = query.CopyToDataTable();
dsTest.Tables.Add(dt);
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", dsTest);
}
我该如何解决这个问题?
答案 0 :(得分:1)
来自How to: Implement CopyToDataTable Where the Generic Type T Is Not a DataRow
CopyToDataTable方法获取查询结果并将数据复制到DataTable中,然后可以将其用于数据绑定。 但是,CopyToDataTable方法仅在IEnumerable上运行 source 其中泛型参数T的类型为DataRow 。虽然这个 很有用,它不允许从一系列表创建表 标量类型,来自投射匿名类型的查询,或来自 执行表连接的查询。
这就是为什么你不能直接使用CopyToDataTable而不写一些扩展名。
链接主题介绍了如何实现两个自定义CopyToDataTable<T>
扩展方法,这些方法接受T
以外类型的通用参数DataRow
。