0

我的 VB 代码中有一个数据表,我想将它分成两个级别(换句话说,在另一个组中分组),但我在做这件事时遇到了问题。

为了便于说明,假设我的数据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

现在,我想创建一个双组 - 例如,假设我想创建一个内存查询,首先分组,然后在该Start_Date组内End_Date,第二个分组,Name1这样我就可以编写一个循环:

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 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

编辑2

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 回答