网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > Routers配置

Asp.net linq where子句不产生预期结果

Asp.net linq where子句不产生预期结果

asp.net xml vb.net linq

Asp.net linq where子句不产生预期结果,asp.net,xml,vb.net,linq,linq-to-xml,Asp.net,Xml,Vb.net,Linq,Linq To Xml,我有以下xml: <Root> <Result img="1.png"> <Programs> <Program> <ProgramID>1</ProgramID> </Program> </Programs> </Result

我有以下xml:

<Root> <Result img="1.png"> <Programs> <Program> <ProgramID>1</ProgramID> </Program> </Programs> </Result> <Result img="2.png"> <Programs> <Program> <ProgramID>1</ProgramID> </Program> <Program> <ProgramID>2</ProgramID> </Program> </Programs> </Result> <Result img="3.png"> <Programs> <Program> <ProgramID>1</ProgramID> </Program> </Programs> </Result> <Result img="4.png"> <Programs> <Program> <ProgramID>1</ProgramID> </Program> </Programs> </Result> </Root> 1. 1. 2. 1. 1. 我试图用下面的linq语句按ProgramID过滤xml,但当我传递值2时,总是没有得到结果,奇怪的是,当我在中传递值1时,我确实得到了预期的结果,这是所有四个结果

xOut = New XElement("Root", _ From s In x...<Result> _ Where s.<Programs>.<Program>.<ProgramID>.Value = 2 _ Select s) xOut=New-XElement(“根”_ 从x中的s_ 其中,s….值=2_ 选择(s) linq查询有什么问题。为什么1能工作,而2不能?我还希望在过滤后保留xml结构。

以下是在C#中的实现方法:

抱歉,我不确定VB.NET的等价物是什么。

这并不奇怪,您的XML格式不正确。在下,您有两个程序项,其余的只有一个。您需要一种方法来查询此程序集合。XML格式没有错误-这些程序节点位于父程序节点下,非常好。谢谢Jesse C.Slicer,您的代码工作得非常好。我认为“Any”函数是这里的关键。如果有人感兴趣,下面是vb中的代码:>xOut=New-XElement(“根”,x.substands(“结果”)。其中>(函数(y)y…Any(函数(z)z.Value=“2”)) var xOut = new XElement( "Root", x.Descendants("Result") .Where(y => y.Descendants("Programs").Descendants("Program").Descendants("ProgramID") .Any(z => z.Value == "2")));

(责任编辑:admin)