【发布时间】:2012-10-15 19:06:48
【问题描述】:
我有以下 LINQ 查询,它将按列分组并将每个组添加到数据集中的数据表中:
Dim ds As New DataSet
Dim query = From r In bookedorders Group By key = r.Field(Of Integer)("productgroup") Into Group
For Each grp In query
Dim x As New DataTable
x = grp.Group.CopyToDataTable()
ds.Tables.Add(x)
Next
如何在此查询中从表 bookedorders 中选择特定列,然后再将它们添加到 DataTable?
我有 18 列,我只想在结果 DataTable 中显示 4。
【问题讨论】:
-
您只能通过
CopyToDataTable和IEnumerable(Of DataRow)创建一个DataTable。如果您通过匿名类型仅选择几列,则无法再从中创建DataTable。 -
@TimSchmelter 我现在正在做的是在循环中使用 datatable.columns.remove,但我想如果我要删除它们,我为什么要添加列!这是一个愚蠢的解决方案,但我厌倦了寻找解决方案!
-
最终,您为什么需要将其推送到数据表中?为什么不只使用类/匿名类型进行投影?除非你真的需要在代码中下线,否则 DataTables 似乎有点过头了。
-
@JimWooley:如果他需要从方法中返回表,他不能使用匿名类型,并且与
List(Of Foo)没有太大区别。 -
@JimWooley 我正在使用第三方库来打印表格,它要求我返回要在数据集中打印的表格