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>ジェネリック パラメーターを受け入れる2 つのカスタム拡張メソッドを実装する方法について説明します。TDataRow

于 2013-08-16T11:50:44.293 に答える