vbReturn LINQ query to DataTable .NET 3.5?



我想使用LINQ查询两个DataTables(通过解析Excel文件填充),并将它们连接到匹配字段"UPC"上,如下所示:

Dim query = From c In dt.AsEnumerable() _
Join r In dtUnits.AsEnumerable() _
On c.Field(Of String)("UPC") Equals r.Field(Of String)("UPC") _
Select New With {.UPC = r.Field(Of String)("UPC")}

另外,我想复制这个LINQ查询结果到一个数据表。我找到了一个方法CopyToDataTable(),但它是在。net 4.5中,而我们的服务器只支持。net 3.5。

如何在vb.net 3.5中模拟此功能?

谢谢!

自。net 35以来,CopyToDataTable已经存在。但问题是,您希望从匿名类型"从头"创建DataTable。这行不通。

CopyToDataTableIEnumerable<DataRow>的扩展。所以你要么选择一个 DataRow从你的DataTables:

Dim query = From c In dt.AsEnumerable() _
            Join r In dtUnits.AsEnumerable() _
            On c.Field(Of String)("UPC") Equals r.Field(Of String)("UPC") _
            Select c
Dim table = query.CopyToDataTable()

或者使用使用反射的ObjectShredder,因此不是最有效的方法(c#实现)。

看看这篇文章:

http://codecorner.galanter.net/2009/12/17/grouping-ado-net-datatable-using-linq/

你可以使用.toDataTable方法,但只有当你的LINQ查询返回实际的数据表行。对于自定义类型,您可以使用附加到文章代码来执行相同的操作。

请阅读这篇文章LINQ TO DATATABLE in WCF,连接到冒险数据库

Datasets不实现IEnumerable/IQueryable接口。

所以请阅读这篇文章。

http://www.wnewsone.com/tutorials/wcf/ShowArticle.aspx?articleid=20143

相关内容

  • 没有找到相关文章