需要两个键才能获得唯一值的集合

时间:2011-05-02 03:02:57

标签: c# collections

我想知道是否有人知道存储数据的好方法,以便用两个密钥编制索引。基本上,我需要像表一样的东西(top-row是key1,left-column是key2,字母是从索引返回的值):

[ ] [1] [2] [3] [4]
[1] [A] [B] [C] [D]
[2] [B] [E] [F] [G]
[3] [C] [F] [H] [I]
[4] [D] [G] [I] [J]

我可以轻松地将其实现为多维数组,但由于表的一半总是相同的,所以它似乎是多余的。到目前为止,我能提出的最佳解决方案涉及一个二维列表,第二个维度是一个可变长度,同时强制要求两个键中的较大者或较小者首先被索引。这将表格变为:

[ ] [1] [2] [3] [4]
[1] [A]
[2] [B] [E]
[3] [C] [F] [H]
[4] [D] [G] [I] [J]

有没有人有更好的想法?

编辑:我可能已经找到了自己的解决方案。见评论。

2 个答案:

答案 0 :(得分:1)

我建议:

Dictionary<Tuple<int, int>, char>

除非你的桌子非常大。

答案 1 :(得分:0)

如果您运行的是.NET 4,则应该查看Tuple类。

IDictionary<Tuple<K1, K2>, V> - 这是表示双键词典的正确方法。