0

次のオブジェクトがあります。

countDictionary As Dictionary(of Category, Dictionary(of Date, Integer))

にはClass列挙プロパティがあります。デモンストレーションのために、これを と呼びますMasterCategory

次のようなオブジェクトを取得しようとしています。

groupedCountDictionary As Dictionary(of MasterCategory, Dictionary(of Date, Integer)

私が得ることができた最高の結果は次のとおりです。

Lookup(of MasterCategory, Dictionary(of Date, Integer))

から:

countDictionary.ToLookup(Function(o) o.Key.MasterCategory, Function(o) o.Value)

その結果、IEnumerable (Of Dictionary(of Date, Integer))MasterCategory値が生成されます。

ただし、Dictionary の IEnumerableを 1 つのディクショナリにフラット化し、すべての整数を日付ごとに合計 (合計カウント) する必要があります。

次に、(多数のスタックオーバーフローの投稿から)さまざまな と を使用して「平坦化」しようとしましselectgroup byが、私の努力は不十分でした。

誰でもこれを行う方法を提案できますか? 可能な場合は、 VB.Netの回答を探します。

編集:

現在のコード

[Category Class]
-    MasterCategory As Enum
-    Name As String etc

[countDictionary As Dictionary(of Category Objects, Dictionary(of Date, Integer))]
-    length 8
-    Children of 8 Categories:
        3 with MasterCategory A, 1097 int's by date
        4 with MasterCategory B, 1097 int's by date
        1 with MasterCategory C, 1097 int's by date

最大限の努力

[Lookup(of MasterCategory, Dictionary(of Date, Integer)]
-    length 3
-    Children of 3 Master Categories:
     1 of IEnumerable(of Dictionary(of Date, Integer)) and length 3
         3 x Dictionary length 1097 int's by date

     1 of IEnumerable(of Dictionary(of Date, Integer)) and length 4
         3 x Dictionary length 1097 int's by date

     1 of IEnumerable(of Dictionary(of Date, Integer)) and length 1
         3 x Dictionary length 1097 int's by date

必須

[Dictionary(MasterCategory, Dictionary(of Date, Integer))]
-    length 3
-    Children of 3 Master Categories:
     3 of Dictionary(of Date, Integer) with summed total int's
4

1 に答える 1

1

SelectManyですか?もしそうなら、これはあなたが求めていることをするかもしれません:

C#

test.SelectMany(x => x.Key.MasterCategory).Sum(x => x.ThePropertyToSum)

VBでは、次のように思います:

test.SelectMany(Function(x) x.Key.MasterCategory).Sum(Function(x) x.ThePropertyToSum)
于 2012-04-16T11:47:01.933 に答える