从XML文件初始化C#中的锯齿状数组。以下代码似乎可以创建我想要的数据结构,从调试器中可以看到,但代码返回IEnumerable类型的值。
var ia = (from e in XDocument.Load("Test.xml").Descendants("doc")
select (
from rows in e.Elements("rows")
select (
from cols in rows.Elements("cols")
select int.Parse(cols.Value)
).ToArray()
).ToArray());
如果我最后再加上.ToArray()
(感谢其他StackOverflow文章),我会回来int[1][][]
。
有关如何使代码正常工作的任何想法,我只需编写int[][] array = (from e in...
等等。
答案 0 :(得分:1)
如果始终只有一个doc
元素,您可以执行以下操作:
var ia = (from e in XDocument.Load("Test.xml").Descendants("doc")
select (
from rows in e.Elements("rows")
select (
from cols in rows.Elements("cols")
select int.Parse(cols.Value)
).ToArray()
).First().ToArray());
如果您期望多一个doc
元素,则可以进行额外的SelectMany
调用:
var ia = (from e in XDocument.Load("Test.xml").Descendants("doc")
select (
from rows in e.Elements("rows")
select (
from cols in rows.Elements("cols")
select int.Parse(cols.Value)
).ToArray()
).SelectMany(x => x).ToArray());
答案 1 :(得分:0)
你有后代*行* cols。多数民众赞成3D,你想要2D。我猜你的xml文件中只有一个“doc”后代。当集合中有多个项目时,您可以验证Single
哪个失败,这意味着不止一个“doc”:
var ia = (from e in XDocument.Load("Test.xml").Descendants("doc")
select (
from rows in e.Elements("rows")
select (
from cols in rows.Elements("cols")
select int.Parse(cols.Value)).ToArray()).Single().ToArray());