0

VB.Net の複数のグループを持つ IGroup を反復する方法について、ここと Web のアーカイブを調べるのに何時間も費やしました。C# にはかなりの数のソリューションがありますが、私は VB.Net に変換するのに本当に苦労しています。

ここに私がグループ化している私のリストがあります

dim merge_list As List(Of MergeData)

リスト内の3つのプロパティでグループ化するコードは次のとおりです

 Dim groups = merge_list.GroupBy(Function(t) New With {Key t.GUID.Category,
                                       Key t.GUID.FeatureType,
                                       Key t.GUID.AssetType}) _
                                       .Where(Function(grp) grp.Count > 1)

次に、グループをループしようとしますが、グループ リスト内のアイテムのタイプ (つまり、薄暗いグループ As SomeType) がないため、それらを操作する方法がわかりません。

これがグループをループする私のコードです

dim group '===note there is no "As SomeType" for group just 'Dim group'===
For Each group In groups
  ' since group is not typed I cannot figure out how to work with it 

next

VB.NET を使用して複数のグループで IGoup を反復処理する方法を教えてください。

4

2 に答える 2

2

次のようにネストされた For Each を使用するだけです:-

 For Each item In groups
        Console.WriteLine(item.Key.GUID.Category) //You can access only `Keys` here
        For Each inneritem In item
              Console.WriteLine(inneritem.GUID.Category)
               //so on (You can access all the properties here)
        Next
 Next

このFiddleを確認してください。

于 2014-12-30T01:48:59.563 に答える
2

groupステートメントの外側で宣言する必要はありませんFor Each。次のコードを確認してください。

Dim source = Enumerable.Range(0, 1000)

Dim groups = source.GroupBy(Function(x) New With {
                                Key .ByFive = x Mod 5,
                                Key .ByTen = x Mod 10,
                                Key .ByTwenty = x Mod 20})

For Each group In groups
    Console.WriteLine("ByFive: {0}, ByTen: {1}, ByTwenty: {2}, Count: {3}",
                  group.Key.ByFive, group.Key.ByTen, group.Key.ByTen, group.Count())
Next

それはうまくコンパイルされ、印刷されます:

ByFive: 0, ByTen: 0, ByTwenty: 0, Count: 50
ByFive: 1, ByTen: 1, ByTwenty: 1, Count: 50
ByFive: 2, ByTen: 2, ByTwenty: 2, Count: 50
ByFive: 3, ByTen: 3, ByTwenty: 3, Count: 50
ByFive: 4, ByTen: 4, ByTwenty: 4, Count: 50
ByFive: 0, ByTen: 5, ByTwenty: 5, Count: 50
ByFive: 1, ByTen: 6, ByTwenty: 6, Count: 50
ByFive: 2, ByTen: 7, ByTwenty: 7, Count: 50
ByFive: 3, ByTen: 8, ByTwenty: 8, Count: 50
ByFive: 4, ByTen: 9, ByTwenty: 9, Count: 50
ByFive: 0, ByTen: 0, ByTwenty: 10, Count: 50
ByFive: 1, ByTen: 1, ByTwenty: 11, Count: 50
ByFive: 2, ByTen: 2, ByTwenty: 12, Count: 50
ByFive: 3, ByTen: 3, ByTwenty: 13, Count: 50
ByFive: 4, ByTen: 4, ByTwenty: 14, Count: 50
ByFive: 0, ByTen: 5, ByTwenty: 15, Count: 50
ByFive: 1, ByTen: 6, ByTwenty: 16, Count: 50
ByFive: 2, ByTen: 7, ByTwenty: 17, Count: 50
ByFive: 3, ByTen: 8, ByTwenty: 18, Count: 50
ByFive: 4, ByTen: 9, ByTwenty: 19, Count: 50

group内部を扱うときもインテリセンスを取得しますFor Each!

于 2014-12-30T01:48:21.937 に答える