VB.NET - 根据值将对象数组拆分为更小的数组

时间:2016-05-25 20:07:33

标签: arrays vb.net multidimensional-array split

我有一个类型为Material的数组,我希望将其拆分为更小的组。 Material是由TypeDescriptionValue组成的对象。我想显示由Description组合在一起的材料“ValueType,以便我可以将它们显示为:

For Each matTypeGroup As Material() In matTypeGroups
    DisplayTypeName(matTypeGroup(0).Type) 

    For Each mat As Material In matTypeGroup
        DisplayMaterialInfo(mat.Description, mat.Value) 
    Next
Next

最终输出看起来像这样:

- Type1
    Description1: Value1
    Description2: Value2
    Description3: Value3
- Type2
    Description4: Value4
- Type3
    Description5: Value5
    Description6: Value6

如何将Material数组拆分为按Material分组的Type数组数组?

1 个答案:

答案 0 :(得分:3)

您可以使用GroupBy

Dim matTypeGroups = materials.GroupBy(Function(m) m.Type)

您只需编辑代码即可使用IGrouping而不是数组。我假设Type在这里是一个字符串。

For Each matTypeGroup As IGrouping(Of String, Material) In matTypeGroups
    DisplayTypeName(matTypeGroup.Key) 

    For Each mat As Material In matTypeGroup
        DisplayMaterialInfo(mat.Description, mat.Value) 
    Next
Next