Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq到XML-基于条件获取值_C#_.net_Linq_Linq To Xml - Fatal编程技术网

C# Linq到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<

我有一个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</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表达式。没问题。如果这回答了你的问题,那么请考虑帮助其他可能面临类似问题的用户。