C# Linq到XML-基于条件获取值
我有一个XML,如下所示:C# Linq到XML-基于条件获取值,c#,.net,linq,linq-to-xml,C#,.net,Linq,Linq To Xml,我有一个XML,如下所示: <Nodes> <Node> <A>This is a dummy text {12345}</A> <B>Output Value</B> </Node> <Node> <A>This is another dummy text {3462832}</A> <B>Output Value<
<Nodes>
<Node>
<A>This is a dummy text {12345}</A>
<B>Output Value</B>
</Node>
<Node>
<A>This is another dummy text {3462832}</A>
<B>Output Value</B>
</Node>
</Nodes>
这是一个伪文本{12345}
产值
这是另一个虚拟文本{3462832}
产值
我正在使用Linq to XML,如果节点“A”中的文本包含键“12345”,则希望选择节点“B”中的输出值
请提供用于实现此目的的LINQ查询的输入
谢谢 这正是您想要的:-
var nodes = from n in xml.Descendants("Node")
.Where(x => x.Element("A").Value.Contains("12345"))
select n.Element("B").Value;
XML示例:-
<?xml version="1.0" encoding="utf-8"?>
<Nodes>
<Node>
<A>This is a dummy text {12345}</A>
<B>Output Value</B>
</Node>
<Node>
<A>This is a dummy text {12345}</A>
<B>Output Value 2</B>
</Node>
<Node>
<A>This is another dummy text {3462832}</A>
<B>Output Value</B>
</Node>
</Nodes>
这是一个伪文本{12345}
产值
这是一个伪文本{12345}
产值2
这是另一个虚拟文本{3462832}
产值
将返回:-
输出值
输出值2
或在带有LINQ和XPath的单行中:
XDocument xdoc = XDocument.Load(path_to_xml);
var b = (string)xdoc.XPathSelectElement("//Node[contains(A,'12345')]/B");
返回第一个找到的元素匹配条件的值。如果需要所有匹配项,请改用XPathSelectElements。谢谢!成功了。我没有正确使用lambda表达式。没问题。如果这回答了你的问题,那么请考虑帮助其他可能面临类似问题的用户。