LINQ新手。 示例xml:
val waypointList = list.checkItemsAre<Waypoint>() ?: return null
我想将其解析为元组:
<item name="XX">
<inside type="A"/>
<inside type="B" />
</item>
<item name="YY">
<inside type="C"/>
<inside type="D" />
</item>
到目前为止,我可以使用以下代码在线检索每个项目的第一行:(XX, A)
(XX, B)
(YY, C)
(YY, D)
和(XX, A)
:
(YY, C)
我相信我应该将var selected = (from item in doc.Root.Elements()
let inside = item.Element(XName.Get("inside", item.GetDefaultNamespace().NamespaceName))
select Tuple.Create(item.Attribute("name").Value,
inside.Attribute("type").Value)).ToList();
修改为item.Element
,但到目前为止还没有运气。
答案 0 :(得分:1)
, IFoo
您可以使用var tuples = XElement.Parse(xml).Descendants("item")
.SelectMany(item => item.Elements()
.Select(inside => Tuple.Create(item.Attribute("name"), inside.Attribute("type"))));
来帮助您从单个元素构建元组集合。
答案 1 :(得分:1)
而不是使用item.Element
,您应该遍历item.Elements
:
var selected = (from item in doc.Root.Elements()
from inside in item.Elements("inside")
select Tuple.Create(
item.Attribute("name").Value,
inside.Attribute("type").Value)
).ToList();