您好我想通过我的xml中的属性环境过滤来获取连接 但我得到一些错误,任何人都可以帮助。
这是我的代码:
XElement xelement = XElement.Load(xml);
var Connections = from conn in xelement.Elements("Conections")
where (String)conn.Element("Conection").Attribute("Enviroment") == "Test"
select conn;
foreach (XElement conection in Connections)
{
MessageBox.Show(conection.Element("Conection").Value);
}

这是我的xml
<?xml version="1.0" encoding="utf-8"?>
<Config>
<General>
<FormaInicial></FormaInicial>
<DiasRecordatorioBuro></DiasRecordatorioBuro>
<EnviarSMSDomiciliacion>rue</EnviarSMSDomiciliacion>
<SimularDeathLock></SimularDeathLock>
<IsProductionEnviroment></IsProductionEnviroment>
<WaitingTimeBetweenExecutions></WaitingTimeBetweenExecutions>
<NumberTriesBeforeRestartService></NumberTriesBeforeRestartService>
</General>
<Conections>
<Conection Enviroment="Production">
<Servidor></Servidor>
<BaseDatos>==</BaseDatos>
<Usuario></Usuario>
<Password></Password>
</Conection>
<Conection Enviroment="Test">
<Servidor></Servidor>
<BaseDatos></BaseDatos>
<Usuario></Usuario>
<Password></Password>
</Conection>
</Conections>
</Config>
&#13;
答案 0 :(得分:0)
您面临的问题(最有可能)是“Connections”是“Connection”元素的集合,当您尝试按属性过滤它们时 - 您将只检查第一个元素。您需要先使用SelectMany来展平集合:
bw.write(returnMessage + "\n");
然后在您的结果中,您将拥有“连接”类型的XElements集合:
var connections = xelement.Elements("Conections")
.SelectMany(c => c.Elements("Conection"))
.Where(c => c.Attribute("Enviroment").Value == "Test");