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

bookedordersDataTableに追加する前に、このクエリのテーブルから特定の列を選択するにはどうすればよいですか?18個の列があり、結果に4個を表示したいだけですDataTable

4

1 に答える 1

1

CopyToDataTableDataTableは、を使用してのみ作成できます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 に答える