Я новичок в LINQ, и мне удалось написать несколько простых заявлений. Но сейчас у меня более сложная ситуация, которую я не могу понять.
По сути, я пытаюсь написать оператор LINQ to Objects, в котором отношения являются отношениями прародителя, родителя, потомка. (Вы также можете назвать это отношением Master Detail.)
В коде Legacy приведена упрощенная версия, которую я пытаюсь выполнить.
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"})))
Однако, это только перечислило всех детей (Покрытия).
Вот результат, который я ищу:
Location
Item
Coverage
Item
Coverage
Coverage
Location
Item
Coverage
Итак, данные сгруппированы по местоположению и пункту.
Еще один способ взглянуть на это - ListView или Report. Где группировка осуществляется по местоположению и пункту.
Пример показан ниже
Location
Item
Coverage
Item
Coverage
Coverage
Location
Item
Coverage
Это ясно?