0

我想让我的 Linq 结果在数据集/数据表中。我目前遇到的问题是查询变量没有属性 copyToDataTable。我得到这个错误。

类型“x.v_Checklist”不能用作泛型类型或方法“System.Data.DataTableExtensions.CopyToDataTable”中的类型参数“T”

这是我的代码

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);
}

我怎么解决这个问题?

4

1 回答 1

1

如何:实现通用类型 T 不是 DataRow 的 CopyToDataTable

CopyToDataTable方法获取查询结果并将数据复制到 DataTable 中,然后可以将其用于数据绑定。但是,CopyToDataTable 方法仅在泛型参数 T 的类型为 DataRow 的 IEnumerable 源上运行。尽管这很有用,但它不允许从一系列标量类型、从投影匿名类型的查询或从执行表连接的查询创建表。

这就是为什么不写一些扩展就不能直接使用 CopyToDataTable 的原因。

链接的主题描述了如何实现两个自定义CopyToDataTable<T>扩展方法,它们接受TDataRow.

于 2013-08-16T11:50:44.293 回答