2016-05-25 10 views
1

小さいグループに分割したいタイプの配列Materialがあります。 Materialは、Type,DescriptionおよびValueからなるオブジェクトである。VB.NET - 値の小さい方の配列にオブジェクトを分割する

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

方法:

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 

最終的な出力は次のようになります。私は、材料私はこのような種類のそれらを表示できるようにTypeで一緒にグループ化されたDescriptionValueを表示したいです配列MaterialMaterialの配列に分割して配列をTypeにグループ分けしますか?

答えて

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

それも私の答えになるだろう。この答えは配列を返しませんが、それはあなたが望むようにグループ化します。使用方法を知る必要がある場合は、MSDNでIGroupingを参照してください。 –

+0

.ToList()を呼び出すことはできませんでしたが、それは配列のように、リストの中の項目を使用しています。 –

+0

この場合、IGroupingを使って作業することもできますが、まさに同様に動作します。 –

関連する問題