我在这里遇到一个问题,可以在C#中使用Xpath来解决。但是,我试图通过LINQ做到这一点,但我只是不知道该怎么做。 我有一个重复的Group2,其中有几个子节点。我想基于组2后代中元素的值选择“ Group2”。 提前寻求帮助。这是一个示例xml。
<Receive>
<Idoc>
<EDI_DC40>
<TabName>EDI_DC40</TabName>
</EDI_DC40>
<Group1>
<Group2>
<Group3>
<SelectGroup2BasedonValueofThisNode>001</SelectGroup2BasedonValueofThisNode>
</Group3>
</Group2>
<Group2>
<Group3>
<SelectGroup2BasedonValueofThisNode>002</SelectGroup2BasedonValueofThisNode>
</Group3>
</Group2>
<Group2>
<Group3>
<SelectGroup2BasedonValueofThisNode>003</SelectGroup2BasedonValueofThisNode>
</Group3>
</Group2>
</Group1>
</Idoc>
var _selectedGroup = document.Descendants("Group2");
这将选择所有第2组-但接下来我不确定如何将位置或选择位置。
var element = _cloneDocument.Descendants("Group2").Where(x => x.Value == "001");
好吧,我刚刚尝试了上面的代码,它似乎可以工作。我的下一个问题-这是正确的方法吗?或者,还有另一种推荐的方法。
答案 0 :(得分:0)
您需要使用LINQ2XML inside where委托,例如:
var element = doc
.Descendants("Group2")
.Where
(
x => x.Descendants("SelectGroup2BasedonValueofThisNode").Single().Value == "001"
)
.Single();
这将为您提供:
<Group2>
<Group3>
<SelectGroup2BasedonValueofThisNode>001</SelectGroup2BasedonValueofThisNode>
</Group3>
</Group2>
在DotNetFiddle上单击here作为示例。