【发布时间】:2011-01-12 16:25:19
【问题描述】:
我是 LINQ 的新手,我已经能够编写一些简单的语句。但是现在我有一个更复杂的情况,我无法弄清楚。
基本上,我正在尝试编写一个 LINQ to Objects 语句,其中关系是祖父母、父母、孩子的关系。 (您也可以将其称为主从关系。)
在旧代码中,这是我想要完成的简化版本。
Dim coverages As New List(Of Coverage)
Dim coverage As Coverage
For Each rl In oClaimsPolicy.RiskLocations
coverage = New Coverage
coverage.Level = "Location"
'Get rl detail detail
coverages.Add(coverage)
For Each ri In rl.RiskItems
coverage = New Coverage
coverage.Level = "Item"
'Get ri detail
coverages.Add(coverage)
For Each rc In ri.RiskCoverages
coverage = New Coverage
coverage.Level = "Coverage"
'Get rc detail here
coverages.Add(coverage)
Next
Next
Next
如果不清楚,一个Location 可以有多个Items,一个Item 可以有多个Coverages。我基本上想列出项目并显示祖父母(位置)、父母(项目)和孩子(覆盖)之间的关系。
更新:
这是我想出的:
Dim coverages = oClaimsPolicy.RiskLocations. _
SelectMany(Function(rl) rl.RiskItems. _
SelectMany(Function(ri) ri.RiskCoverages. _
Select(Function(rc) New Coverage With {.Level = "Coverage"})))
但是,这只是列出了所有孩子(Coverages)。
这是我正在寻找的结果:
Location
Item
Coverage
Item
Coverage
Coverage
Location
Item
Coverage
因此,数据按位置和项目分组。
查看它的另一种方式是 ListView 或 Report。分组是按位置和项目完成的。
一个例子如下所示
Location
Item
Coverage
Item
Coverage
Coverage
Location
Item
Coverage
这清楚吗?
【问题讨论】:
-
到目前为止您尝试了什么,请发布代码。以及它如何没有满足您的要求(显示所需的和实际的输出)。
-
Lazarus,我根据您的要求更新了条目。谢谢
标签: vb.net linq linq-to-objects