我有以下xml:
<Root>
<Result img="1.png" name="a">
<Programs>
<Program name="foo1">
<ProgramID>1</ProgramID>
</Program>
</Programs>
</Result>
<Result img="2.png" name="b">
<Programs>
<Program name="foo1">
<ProgramID>1</ProgramID>
</Program>
<Program name="foo2">
<ProgramID>2</ProgramID>
</Program>
</Programs>
</Result>
<Result img="3.png" name="c">
<Programs>
<Program name="foo1">
<ProgramID>1</ProgramID>
</Program>
</Programs>
</Result>
<Result img="4.png" name="d">
<Programs>
<Program name="foo1">
<ProgramID>1</ProgramID>
</Program>
</Programs>
</Result>
</Root>
我正在尝试使用以下linq语句通过ProgramID过滤xml,但是当我传递值为2时,我总是得不到任何结果,奇怪的是当我传递值1时,我确实得到预期结果,这是所有四个结果
xOut = New XElement("Root", _
From s In x...<Result> _
Where s.<Programs>.<Program>.<ProgramID>.Value = 2 _
Select s)
linq查询有什么问题。为什么1工作但2不工作?我还希望在过滤后保留xml结构。
答案 0 :(得分:1)
以下是您在C#中的表现方式:
var xOut = new XElement(
"Root",
x.Descendants("Result")
.Where(y => y.Descendants("Programs").Descendants("Program").Descendants("ProgramID")
.Any(z => z.Value == "2")));
不确定VB.NET的等价物是什么,抱歉。