C# CopyToDataTable方法
我一直在看下面的MSDN教程,但似乎无法将该方法应用到我的代码中-无法找出区别所在 这篇文章,在,特别是代码-C# CopyToDataTable方法,c#,linq,C#,Linq,我一直在看下面的MSDN教程,但似乎无法将该方法应用到我的代码中-无法找出区别所在 这篇文章,在,特别是代码- // Create a sequence. Item[] items = new Item[] { new Book{Id = 1, Price = 13.50, Genre = "Comedy", Author = "Gustavo Achong"}, new Book{Id = 2, Price = 8.50, Genre = "Drama", Author = "J
// Create a sequence.
Item[] items = new Item[] {
new Book{Id = 1, Price = 13.50, Genre = "Comedy", Author = "Gustavo Achong"},
new Book{Id = 2, Price = 8.50, Genre = "Drama", Author = "Jessie Zeng"},
new Movie{Id = 1, Price = 22.99, Genre = "Comedy", Director = "Mary Barnes"},
new Movie{Id = 1, Price = 13.40, Genre = "Action", Director = "Emmanuel Black"}
};
// Query for items with price greater than 9.99.
var query = from i in items
where i.Price > 9.99
orderby i.Price
select i;
// Load the query results into new DataTable.
DataTable table = query.CopyToDataTable();
看起来很简单。带有book和movie子类的对象数组似乎可以转换为DataRow,这就是CopyToDataTable运行的对象
但是我存储在变量中的对象数组不允许我使用CopyToDataTable方法。我本以为我的对象“qryData”与上面的“items”非常相似
var qryData =
sdTable.AsEnumerable().Cast<DataRow>()
.OrderByDescending(t => t[c.ColumnName] == DBNull.Value
? 0 : Convert.ToSingle(t[c.ColumnName]))
.GroupBy(t => t["DAT_ID"])
.Select(g => new {g, count = g.Count()})
.SelectMany(x => x.g.Select(b => b)
.Zip(Enumerable.Range(1, x.count), (j, i) => new {
inst = j["DAT_ID"],
idn = j["ID_NUM"],
val = j[c.ColumnName],
tdt = dailyCount[Convert.ToInt32(j["DAT_ID"])],
rn = i
})
);
var qryData=
sdTable.AsEnumerable().Cast()
.OrderByDescending(t=>t[c.ColumnName]==DBNull.Value
?0:转换为单个(t[c.ColumnName]))
.GroupBy(t=>t[“DAT_ID”])
.Select(g=>new{g,count=g.count()})
.SelectMany(x=>x.g.Select(b=>b)
.Zip(可枚举范围(1,x.count),(j,i)=>新{
inst=j[“数据ID”],
idn=j[“ID_NUM”],
val=j[c.ColumnName],
tdt=每日计数[转换为32(j[“数据ID”)],
rn=i
})
);
查询工作正常,返回大量的“(inst、idn、val、tdt、rn)”,但不能在其上使用copytodatable。{方法不可用}添加.ToArray()或.AsEnumerable()也没有帮助
谢谢你的帮助
编辑:
速记,
我已经包含了System.Data,认为.CopyToDataTable()方法在其中是可用的。我试图包括System.Data.DataTableExtensions,但没有。然后,我尝试将System.Data.DataSetExtensions作为(.NET)引用包含在我的项目中,但没有起到任何作用。基于以下陈述: 但不能在其上使用CopyToDataTable。添加.ToArray()或.AsEnumerable()也没有帮助
您只需在代码文件的顶部添加适当的
using
语句,即可使用中定义的扩展方法的命名空间。因此,请检查您在中定义该类的名称空间,并将using
添加到您要在其中使用该类的代码文件的顶部。您是否有System.Data.DataTableExtensions的using
语句?那么当您尝试使用它时会发生什么?您是否在运行时收到错误或异常?如果是,那是什么?谢谢你的提示!我尝试执行include System.Data.DataTableExtensions,但名称空间没有被激活found@willy_pond,所以您构建了扩展方法,并将其放在名称空间System.Data
声明中?您好,我相信它位于“System.Data”名称空间中,我将其包括在内。为了确保我尝试了include System.Data.DataTableExtensions,但没有找到名称空间我还没有构建任何扩展方法-我认为.CopyToDataTable()扩展方法在System.Data中可用-MSDN上肯定提到过它-