Linq到XML,选择带有where条件的查询
本文关键字:where 条件 查询 XML 选择 Linq | 更新日期: 2023-09-27 18:22:08
这是我的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"="Engine-inconnu")将返回Engine_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"));