这是我的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。
我如何才能实现这一目标?
感谢提前......
答案 0 :(得分:2)
如果您只期望一个结果,则以下内容应该有效:
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"));