C# 使用linq将xml文件加载到二维矩形数组中
我目前使用的是锯齿状数组:C# 使用linq将xml文件加载到二维矩形数组中,c#,xml,arrays,linq,C#,Xml,Arrays,Linq,我目前使用的是锯齿状数组:private double[][]数组然后我像这样加载数组 加载锯齿阵列 XDocument doc = XDocument.Load("file.Xml"); array = doc.Root.Elements("Month").Select(month => month.Elements().Select(x => (double)x).ToArray()).ToArray(); 所以现在我的问题是我需要得到内部数组的长度,正如我读到的,这是不可能的
private double[][]数组代码>然后我像这样加载数组
加载锯齿阵列
XDocument doc = XDocument.Load("file.Xml");
array = doc.Root.Elements("Month").Select(month => month.Elements().Select(x => (double)x).ToArray()).ToArray();
所以现在我的问题是我需要得到内部数组的长度,正如我读到的,这是不可能的,所以我需要在一个矩形数组private double[,]数组中加载xml但是对于linq我不知道怎么做
XML看起来像
-0.25
0.95
-0.90
...
-0.5
0.47
-0.17
...
...
为什么不可能获取内部数组的长度?Linq是一个要求吗?我在尝试获取长度(1)时遇到了一个异常,我在这里读到了,我想这是最后一个post@C.Evenhuis嗯,它需要很快,因为这是一个事件,我知道林克做得很好,但不是,这不是一项要求,没有必要将其存储在阵列中。我不能允许进行foreach,因为它会在mousemove上调用,而且如果用户移动到阵列中,它会不断被调用canva@Mokmeuh对不起,我没抓住你。你能解释一下foreach有什么问题吗?你到底想从数组中得到什么?抱歉,如果我不清楚,让我再试一次,我的意思是,每次鼠标移动时都会调用foreach,因此需要很多资源,并且长度是像这样的三元条件所需要的,数组[yCurrent>=array.GetLength(1)?11:yCurrent][xCurrent>=array.GetLength(0)?12:xCurrent]
但我无法获取Dimension 1的长度,因为它不存在,因为它不是矩形array@Mokmeuh您不必枚举数组
。这只是访问内部数组长度的一个示例。您可以通过访问索引数组[0]来执行相同的操作.Length
-这将为您提供第一个内部数组的长度…我是dumb xD,让我试试这个,它工作正常,好吧,谢谢,我想我问错了问题
<document>
<Month>
<Depth>-0.25</Depth>
<October>0.95</October>
<November>-0.90</November>
...
</Month>
<Month>
<Depth>-0.5</Depth>
<October>0.47</October>
<November>-0.17</November>
...
</Month>
...
</document>
double[][] array =
doc.Root.Elements("Month")
.Select(month => month.Elements().Select(x => (double)x).ToArray())
.ToArray();
foreach(var innerArray in array)
Console.WriteLine(innerArray.Length); // you can get length of inner array