0

キーと値の両方が繰り返される場合、キーと値のペアを含むどのような構造を採用する必要がありますか?

シナリオ: この方法でWPFで匿名型を生成しています

var result = Enum.GetValues(typeof(Key)).Cast<Key>()
                 .Select(x => new {Key = x, Value = (int)x});

を使って辞書に変換してみました

.ToDictionary(Key => Key, Value => (int)Value);

また

.ToDictionary(Key => (int)Key, Value => Value);

ただし、どちらの場合も、同じキーを持つアイテムがすでに追加されているという例外があります。つまり、どちらの場合もキーが繰り返されます。

では、このシナリオではどのような構造を採用する必要がありますか?私は行くべきですか、KeyValuepair<int, Key>[]それとも他のものですか?

4

2 に答える 2

3

個人的には私はただ固執しDictionary<TKey, List<TValue>>ますが、より洗練されたインターフェイスが必要な場合は、そのための独自のMultiMapラッパークラスを作成することをお勧めします。

もちろん、どちらの場合もToDictionary、既存の一意キー辞書を内部的に使用するため使用できませんが、独自のToMultiMap拡張メソッドを作成することはできます。

于 2012-06-05T07:59:32.490 に答える
0

では、このシナリオではどのような構造を採用する必要がありますか?

ドキュメントに非常に明確かつ明確に記載されています-辞書ではありません。

リスト、配列など、作成パターンではなく、使用パターンに完全に依存します。あなたがそれをどのように使うかを言わないので-まあ-質問に答えることはできません。

または、アイテムのリストを含むディクショナリを使用することもできます。キーは一意であり、値のリストを指します。繰り返しになりますが、それはデータの使用方法に依存します-あなたは今ではそれを推測するかもしれません-。

于 2012-06-05T08:01:08.533 に答える