Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有字符串键和int值的C#2D数组_C#_Multidimensional Array - Fatal编程技术网

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

具有字符串键和int值的C#2D数组,c#,multidimensional-array,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 基本上,我有一个列表,其中包含以下信息: [

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

             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字典,这对于确保从表的左上角到右下角的对角线是唯一应该有非零值的地方,如果数据都是正确的(因为在这种情况下,列-行的顺序很重要)


那么从这里到哪里去

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

没有幻想,我会用

d = new Dictionary<string, Dictionary<string, int>>();   
d=newdictionary();
如果我想变得有趣,我会创建一个具有以下内容的类:

  • 到目前为止看到的水平键列表
  • 到目前为止看到的垂直关键点列表
  • 值为0 | 1 | 2的“key1#key2”字典
  • (键1、键2)=>的“设置器”添加到水平键和/或垂直键(如果不存在)
  • (key1,key2)=>的“getter”从字典中检索值

这将允许您以最小的努力在一个漂亮的网格中拉出它,同时保持良好的写入速度。它还允许您以任何方式对行/列进行排序。如果您添加了一个“OptimalMapping”让它知道什么mimetype映射到什么扩展,那么您可以很容易地添加一个检查来查看某个东西是否是最优的

您可以创建一个包含四列值的结构,并将其存储在一个字典中。我不确定我将如何做到这一点。此外,有时多个ext具有相同的MIME类型,这会如何混淆呢?或者只是一个bool[][]结构,索引将映射到字典条目。人们似乎同意你@GaretheGeek的观点,但我不清楚这在代码中会是什么样子,主要是因为我不确定在这个上下文中什么是
struct
。如果你不想让事情复杂化,你可以简单地使用
dictionary
,你可以将MIME类型存储为字符串和扩展名在列表结构中。或者我也可能完全误解了你的需要。尽管如此,如果需要网格,我会使用这种方法来简化工作。