VB.NET中分组再处理

浏览:1049 发布日期:2023-01-09 13:38:42
Dim list = New List(Of CellInfo2) From {
       New CellInfo2(1, 1, "java"),
       New CellInfo2(2, 2, "c#"),
       New CellInfo2(2, 1, "java"),
       New CellInfo2(3, 2, "c#"),
       New CellInfo2(3, 1, "java")
}

Dim x1 = From item In list
             Group item By item.Row Into Group

Dim x2 = list.GroupBy(Of Int32)(Function(c As CellInfo2) c.Row)

x1的类型是匿名类型,x1和x2等价

x2的类型为IEnumberable(Of IGrouping(of Int32, CellInfo2)),

Dim x3 = x2.ToDictionary(Of Int32, Dictionary(Of String, CellInfo2))(Function(p) p.Key, Function(p2) p2.ToDictionary(Of String)(Function(cx) cx.Name))

x3对x2分组的结果再处理,它以x2.Key为键(CellInfo2.Row),值是一个Dict,以CellInfo2.Name为键。

那么x3的类型就为:Dictionary(of Int32, Dictionary(of String, CellInfo2))