Linq to XML select with where子句(Lambda表达式)

时间:2014-10-21 13:42:00

标签: c# xml linq

我的问题很简单:

这是我的xml数据:

<EnginsList>
    <EnginsESC>
      <NomValide>DRSC_6150</NomValide>
      <NomEquivalents>
        <NomEquivalent>DRSC 6150</NomEquivalent>
        <NomEquivalent>DRSC6150</NomEquivalent>
        <NomEquivalent>DRSC6.150</NomEquivalent>
        <NomEquivalent>DRSC_6.150</NomEquivalent>
     </NomEquivalents>
   </EnginsESC>
<EnginsESC>
      <NomValide>DRSC_6152</NomValide>
      <NomEquivalents>
        <NomEquivalent>DRSC 6152</NomEquivalent>
        <NomEquivalent>DRSC6152</NomEquivalent>
        <NomEquivalent>DRSC6.152</NomEquivalent>
        <NomEquivalent>DRSC_6.152</NomEquivalent>
     </NomEquivalents>
   </EnginsESC>
</EnginsList>

通过lambda表达式,我想选择一个带有where子句的节点。

例如,我需要执行此查询:

SELECT <NomEquivalents><NomEquivalent> FROM <EnginsList> WHERE <NomValide> = DRSC_6150

我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Linq to XML

var xmlDocument = XDocument.Load("path");
var nodes = xmlDocument.Descendants("EnginsESC")
        .Where(x => (string)x.Element("NomValide") == "DRSC_6150")
        .SelectMany(x => x.Element("NomEquivalents").Elements("NomEquivalent"))
        .ToList();