簡體   English   中英

Linq to XML,選擇帶條件的查詢

[英]Linq to XML, select query with where condition

這是我的XML內容:

<ListEnginsMesures>
    <EnginsESC>
      <NomValide>Engin_inconnu</NomValide>
      <NomEquivalents>
        <NomEquivalent>Engin inconnu</NomEquivalent>
        <NomEquivalent>Engininconnu</NomEquivalent>
      </NomEquivalents>
    </EnginsESC>
    <EnginsESC>
      <NomValide>DRSC_6150</NomValide>
      <NomEquivalents>
        <NomEquivalent>DRSC 6150</NomEquivalent>
        <NomEquivalent>DRSC6150</NomEquivalent>
        <NomEquivalent>DRSC6.150</NomEquivalent>
        <NomEquivalent>DRSC_6.150</NomEquivalent>
      </NomEquivalents>
    </EnginsESC>
<ListEnginsMesures>

當我具有“ NomEquivalent”時,我想選擇“ NomValide”的值。

例如 :

(選擇'NomValide',其中'NomEquivalent'=“ Engin inconnu”)將返回Engin_inconnu。

(選擇'NomValide',其中'NomEquivalent'=“ DRSC_6.150”)將返回DRSC_6150。

我該如何做到這一點?

提前致謝..

如果您只期望一個結果,那么以下應該起作用:

string xml=@"<ListEnginsMesures>
    <EnginsESC>
      <NomValide>Engin_inconnu</NomValide>
      <NomEquivalents>
        <NomEquivalent>Engin inconnu</NomEquivalent>
        <NomEquivalent>Engininconnu</NomEquivalent>
      </NomEquivalents>
    </EnginsESC>
    <EnginsESC>
      <NomValide>DRSC_6150</NomValide>
      <NomEquivalents>
        <NomEquivalent>DRSC 6150</NomEquivalent>
        <NomEquivalent>DRSC6150</NomEquivalent>
        <NomEquivalent>DRSC6.150</NomEquivalent>
        <NomEquivalent>DRSC_6.150</NomEquivalent>
      </NomEquivalents>
    </EnginsESC>
</ListEnginsMesures>";

var xe = XElement.Parse(xml);
var result = xe.Elements("EnginsESC")
    .Where
    (
        x=>
        x.Element("NomEquivalents")
            .Elements("NomEquivalent")
            .Any(n=>(string)n=="Engin inconnu")
    )
    .Select(x=>(string)x.Element("NomValide"))
    .FirstOrDefault();

如果您期望多個結果:

var results = xe.Elements("EnginsESC")
    .Where
    (
        x=>
        x.Element("NomEquivalents")
            .Elements("NomEquivalent")
            .Any(n=>(string)n=="Engin inconnu")
    )
    .Select(x=>(string)x.Element("NomValide"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM