0

我有以下 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 列,我只想在结果中显示 4 DataTable

4

1 回答 1

1

您只能CopyToDataTable通过IEnumerable(Of DataRow). 如果您仅通过匿名类型选择几列,DataTable则无法再从中创建。

因此,您需要先使用要选择的列创建另一个 DataTable。

例如:

Dim table2 = New DataTable()
table2.Columns.Add("Column1")
table2.Columns.Add("Column2")
Dim query = From r In bookedorders 
            Group By key = r.Field(Of Integer)("productgroup") Into Group

Dim ds As New DataSet
For Each grp In query
    Dim tbl = table2.Clone()
    ds.Tables.Add(tbl)
    For Each row As DataRow In grp.Group
        Dim newRow = tbl.Rows.Add()
        newRow.SetField("Column1", row.Field(Of String)("Column1"))
        newRow.SetField("Column2", row.Field(Of String)("Column2"))
    Next
Next
于 2012-10-15T19:20:20.640 回答