6

私は持っていList<MyClass>ます:

public int MyClass
{
   public int One { get; set; }
   public int Two { get; set; }
}

これで、データは次のようになります(実際にそうなります)。

1:1、2:9

1:2、2:9

1:1、2:8

1:3、2:7

「One」が2回表示される様子をご覧ください。このフラットシーケンスをグループ化して投影したいDictionary<int,ICollection<int>>

KeyValuePairOne:{キー:1、値:{9、8}}

KeyValuePairTwo:{キー:2、値:{9}}

KeyValuePairThree:{キー:3、値:{7}}

との組み合わせをする必要があると思い.GroupByます.ToDictionaryか?

4

3 に答える 3

4

これがToLookup拡張メソッドの目的です。キーが 2 回表示された場合に ToDictionary がスローする場所では、代わりに ToLookup が問題なく、探していることを実行します。

于 2012-05-10T04:04:33.817 に答える
2
var list = new List<MyClass>();

var dictionary = list.GroupBy(x => x.One)
                     .ToDictionary(x => x.Key, x => x.ToArray());
于 2012-05-10T04:05:50.493 に答える
0

それはまさにあなたがそれを行う方法です:

Dictionary<int, List<MyClass>> result =
    items.GroupBy(x => x.One).ToDictionary(x => x.Key, x => x.ToList());
于 2012-05-10T04:08:59.523 に答える