C# IEnumerable-CopyToDataTable()不显示

C# IEnumerable-CopyToDataTable()不显示,c#,sql,linq,C#,Sql,Linq,我正在使用LINQ,我想将结果放入DataTable 这是一个简单的代码 DataTable dt = new DataTable(); var qu = from p in DBop.SampleTBLs select p; dt= qu.///// why i am not getting CopyToDataTable here ? 我的代码有什么问题?扩展方法DataTableExtensions扩展GenericIEnumerable其中T的基类是DataRow。

我正在使用LINQ,我想将结果放入
DataTable

这是一个简单的代码

DataTable dt = new DataTable();
var qu = from p in DBop.SampleTBLs
          select p;
dt= qu.///// why i am not getting CopyToDataTable here ?

我的代码有什么问题?

扩展方法
DataTableExtensions
扩展Generic
IEnumerable
其中
T
基类
DataRow
。因此,定义:

public static DataTable CopyToDataTable<T>(this IEnumerable<T> source ...)
                                           where T : DataRow

编辑:

您可能缺少对类所在程序集的引用。如果我们查看MSDN页面,我们会在页面顶部看到以下内容

名称空间:系统数据
程序集:System.Data.DataSetExtensions(在System.Data.DataSetExtensions.dll中)

因此,这意味着您需要
使用System.Data
位于文件的顶部,但您还需要确保在文件中包含
System.Data.DataSetExtensions.dll


其他一些东西会使它不显示:
DataSetExtensions
是.NET3.5的新功能,因此如果您是在2.0上构建,它也不会显示。另外,
qu
必须是与
IEnumerable
协变的类,如果
qu
不适合,现在将显示扩展方法。

确切的
qu
类型是什么?用于指定的命名空间System.Data.DataTableExtensions?您缺少DataTable.AsEnumerable()Avicena00你能给我解释一下吗。。我在用。。系统数据谢谢你的回答。。。但它不起作用,仍然是copytodatable(),没有出现,我得到了这个错误:错误2使用名称空间指令只能应用于名称空间;'System.Data.DataTableExtensions“”是一种类型,而不是namespace@SHADOW.NET,我编辑了我的答案。谢谢你抽出时间。。。我检查了我正在使用System.Data,我检查了我的项目的参考,它包括System.Data.DataSetExtensions.dll,我使用的是.NET 4.0,这样就排除了
qu
不是
IEnumerable
的所有可执行内容。如果将鼠标悬停在
var
上,会显示数据类型是什么?
//Create & Configure DataTable
var dt = new DataTable();
dt.Columns.Add("Name Column", typeof(string));
dt.Columns.Add("Name Column", typeof(int));

//Your IEnumerable Query 
var qu = from p in DBop.SampleTBLs
         select new object[] {p.SomeProperty, p.SomeProperty2};

//Add results to DataTable
foreach (var item in qu)
    dt.Rows.Add(item);