今晚的 LINQ 学习曲线太陡峭了,所以我再次来这里寻求帮助。提前万分感谢。
这是我当前的代码;
_myList = (
from listLv2 in
_documentRoot.Descendants("Level1").Descendants("Level2")
where
(string)listLv2.Attribute("id") == "12345"
let attrib_Colour = listLv2.Attribute("Colour")
let attrib_ID = listLv2.Attribute("id")
//select listLv2.Descendants("Level3") <---- not working
select new MyObj
{
let attrib_ChildID = ???..Attribute("id")
ParentColour = attrib_Colour.Value,
ParentID = attrib_ID.Value, // in this case 12345
ChildID = attrib_ChildID
}).ToList<MyObj>();
这就是我想要实现的目标;
- 创建一个 MyObjs 列表。我在 MyObjs 中转换 Level3 元素。
- 我只想要 ID 为 12345 的 Level2 元素中的 Level3 元素
- 我想在每个子 Level3 元素中使用 Level2(id=12345) 元素中的一些属性
XML结构如下;
<root>
<Level1>
<Level2 id="12345" colour="Red">
<Level3 id="0001" />
<Level3 id="0002" />
<Level3 id="0003" />
</Level2>
<Level2 id="45678" colour="Blue">
<Level3 id="0004" />
<Level3 id="0005" />
<Level3 id="0006" />
</Level2>
</Level1>
</root>
列表中的对象应该是这样的;
MyObj.ParentID = 12345
MyObj.ParentColour = "Red"
MyObj.ID = 0001
MyObj.ParentID = 12345
MyObj.ParentColour = "Red"
MyObj.ID = 0002
MyObj.ParentID = 12345
MyObj.ParentColour = "Red"
MyObj.ID = 0003
from 和 where 工作。它选择 1 个元素,Level2[id=12345]。好的。Level2 属性正在工作。
这是我无法解决的问题;
- 如何访问每个子 Level3 元素,以便我可以将其转换为 MyObj
- 如何创建 Level3 属性(使用 'let')。我想使用 Let 以便我可以检查 null 等
再次,谢谢