0

当 Key 和 Value 都重复时,应该采用什么包含 Key 和 Value 对的结构?

场景: 我以这种方式在 WPF 中生成匿名类型

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

我尝试将其转换为 Dictionary 使用

.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 回答