C# 需要两个键才能创建唯一值的集合

C# 需要两个键才能创建唯一值的集合,c#,collections,C#,Collections,我想知道是否有人知道一种存储数据的好方法,这样就可以用两个键对数据进行索引。基本上,我需要一个类似于表的东西(顶行是key1,左列是key2,字母是索引返回的值): 我可以很容易地将其实现为多维数组,但由于表的一半总是相同的,因此它似乎是多余的。到目前为止,我能想到的最佳解决方案是一个二维列表,第二个维度是可变长度的,同时强制首先对两个键中的较大键或较小键进行索引。这将表格转换为: [ ] [1] [2] [3] [4] [1] [A] [2] [B] [E] [3] [C] [F] [H] [

我想知道是否有人知道一种存储数据的好方法,这样就可以用两个键对数据进行索引。基本上,我需要一个类似于表的东西(顶行是key1,左列是key2,字母是索引返回的值):

我可以很容易地将其实现为多维数组,但由于表的一半总是相同的,因此它似乎是多余的。到目前为止,我能想到的最佳解决方案是一个二维列表,第二个维度是可变长度的,同时强制首先对两个键中的较大键或较小键进行索引。这将表格转换为:

[ ] [1] [2] [3] [4]
[1] [A]
[2] [B] [E]
[3] [C] [F] [H]
[4] [D] [G] [I] [J]
有谁有更好的主意吗

编辑:我可能自己想出了一个解决办法。请参阅评论。

我建议:

Dictionary<Tuple<int, int>, char>
字典

除非您的表非常大。

如果您正在运行.NET 4,您应该查看课程


IDictionary
-这是表示双键词典的正确方法。

您的描述不清楚。我不知道第一张图片(A、B、C等)应该传达什么。也许你可以用英语来描述你要存储的内容,以及存储的数据与钥匙的关系,而不是画图。事实上,我想我可能已经找到了答案,尽管我还没有测试过。我只需要使用一个带有键的字典作为自定义结构,其中包含两个用于索引的整数值。我还需要重写结构的equals操作符,以匹配键值的顺序是独立的这一事实。我现在要走这条路线,让我知道你对这条路线的看法。谢谢这正是我会想到的。+1令人失望的是,
Tuple
在计算值类型的
GetHashCode
时使用了装箱,因此它作为字典键的使用并不理想。
Dictionary<Tuple<int, int>, char>