【问题标题】:What structure involving Key and Value pair should be adopted when both Key and Value are repeated?当 Key 和 Value 都重复时,应该采用什么包含 Key 和 Value 对的结构?
【发布时间】:2012-06-05 07:57:57
【问题描述】:

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

场景: 我以这种方式在 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&lt;int, Key&gt;[] 还是其他?

【问题讨论】:

    标签: c# dictionary key-value


    【解决方案1】:

    就我个人而言,我会坚持使用Dictionary&lt;TKey, List&lt;TValue&gt;&gt;,但如果您想要一个更高级的界面,您可能需要为此编写自己的MultiMap 包装类。

    当然,在这两种情况下都不能使用ToDictionary,因为它在内部使用现有的唯一键字典,但你可以编写自己的ToMultiMap 扩展方法。

    【讨论】:

      【解决方案2】:

      现在在这种情况下应该采用什么结构?

      在文档中非常清楚明确地说明 - 不是字典。

      列表、数组等等,这完全取决于您的使用模式,而不是创建模式。因为你没有说你是如何使用它的——好吧——这个问题无法回答。

      或者,您可以使用带有项目列表的字典 - 键是唯一的,指向值列表。同样,这取决于 - 您现在可能已经猜到了 - 关于您如何使用数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-18
        • 2011-05-16
        • 1970-01-01
        • 2013-06-24
        • 2013-09-22
        • 2015-10-12
        • 2012-01-25
        • 2015-07-08
        相关资源
        最近更新 更多