带有字符串键和int值的C#2D数组

时间:2013-05-09 15:54:37

标签: c# multidimensional-array

我正在尝试创建一个如下所示的数据结构:

             xls | doc | ppt | pdf
           |---------------------
app/xls    |  1  |  0  |  0  |  0  
app/msword |  1  |  1  |  0  |  0
app/ppt    |  0  |  0  |  1  |  0
app/pdf    |  0  |  0  |  0  |  1

基本上我有一个列表列表,其中包含以下信息:

[ext, xls], [mime, app/xls]
[ext, ppt], [mime, app/ppt]
[ext, doc], [mime, app/msword]
[ext, xls], [mime, app/msword]

请注意,有时扩展名与相应的MIME值不匹配。因此,想要像表这样的输出的原因是能够以图形方式看到未映射到正确MIME的扩展的分布。

因此,我可以遍历列表列表并访问每个文档的ext和mime,但我无法理解的是如何提取/存储因此以表格形式输出此信息。我还有一个正确的ext-mime字典,这对于确保从表格的左上角到右下角的对角线是唯一一个如果数据全部正确则应该具有非零值的地方非常重要(因为那时列行的顺序很重要。)

那么从哪里开始?!

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你就是在上面的结构中循环遍历一堆数据并填充数字(0和1,但可能是2的...... N ++)。

没有花哨,我会用

d = new Dictionary<string, Dictionary<string, int>>();   

如果我想获得幻想,我会创建一个具有以下内容的课程:

  • 到目前为止看到的水平键列表
  • 到目前为止看到的垂直键列表
  • “key1#key2”的字典,其值为0 | 1 | 2 ...
  • (key1,key2)的“setter”=&gt;添加到水平键和/或垂直键(如果它不存在)
  • (key1,key2)的“getter”=&gt;从字典中检索值

这将允许您以最小的努力将其拉出漂亮的漂亮网格,同时保持良好的写入速度。它还允许您以任何方式对行/列进行排序。如果您添加了“OptimalMapping”以让它知道mimetype映射到哪个扩展名,您可以非常轻松地添加一个检查以查看某些内容是否最佳。