0

私は 2 つのレベルでグループ化 (つまり、別のグループ内でグループ化) したい VB コードに Datatable を持っていますが、それを行うのに問題があります。

説明のために、データテーブル にMyTable次のような列があるとします。

Name1     Name2    Start_Date    End_Date   Var1    Var2

したがって、たとえば、でグループ化したいName1場合、次のようにできます。

Dim Query1 = From dr as DataRow in MyTable
             Group dr by Name1 = dr.Item("Name1") into Group

そして、次の行に沿って何かを実行して、そのグループ内のすべてのレコードをループできます。

For Each Grp in Query1
   For Each dr as DataRow in Grp.Rows
      ... do whatever ...
   Next
Next

ここで、二重グループを作成したいと思います。たとえば、最初にグループ化し、次に WITHIN THAT GROUP で 2 番目のグループ化を行うメモリ内クエリを作成してStart_DateEnd_DateName1の行に沿ってループを記述できるようにしたいとします。 :

For Each MainGrp in BiggerQuery
   For Each SubGrp in MainGrp
        For Each dr as DataRow in SubGrp .Rows
            ... do whatever ...
        Next
   Next
Next

この二重グループ化された Linq クエリは、VB ではどのように見えるでしょうか? -私の最初の問題は、VB があなたのグループに名前を付ける必要があるGroupように見えることです。

ありがとう!!!

4

1 に答える 1

1
Dim query = From dr1 As DataRow In MyTable
            Group dr1 By New With { .StartDate = dr1.StartDate, .EndDate = dr1.EndDate } Into g1 = Group
            Select newGroup = (From dr2 As DataRow In g1
                    Group dr2 By dr2.Name1 Into g2 = Group
                    Select g2)

うまくいくはずですが、今はテストできません。

編集

MSDN にネストされたグループ化の良い例があります: http://msdn.microsoft.com/en-us/vstudio/bb737908#grpbynest

EDIT2

From dr1 As DataRow In myTable
Group dr1 By gi1 = New With {.StartDate = dr1.Item("StartDate"), .EndDate = dr1.Item("EndDate")} Into g1 = Group
Select newGroup = (From dr2 As DataRow In g1
                   Group dr2 By gi2 = dr2.Item("Name1") Into g2 = Group
                   Select g2)
于 2013-01-09T21:45:20.660 に答える