C# 选择仅返回一个元素
也许我累了,但我不明白为什么这只是返回一个结果。程序下有三个程序元素,但我只得到了Excel作为结果。我错过了什么?为什么 XML: 您使用C# 选择仅返回一个元素,c#,linq,linq-to-xml,C#,Linq,Linq To Xml,也许我累了,但我不明白为什么这只是返回一个结果。程序下有三个程序元素,但我只得到了Excel作为结果。我错过了什么?为什么 XML: 您使用Element(“Program”)时,您希望使用复数元素,但您的循环不会像现在这样让您达到目的。试试类似的东西 var installedPrograms = (from serverRole in xlServerRoles.Descendants("ServerRole") where serverRo
Element(“Program”)
时,您希望使用复数元素,但您的循环不会像现在这样让您达到目的。试试类似的东西
var installedPrograms = (from serverRole in xlServerRoles.Descendants("ServerRole")
where serverRole.Element("ServerType").Value == "Windows"
from program in serverRole.Element("Programs").Elements("Program")
select program.Value).ToList();
您使用Element(“Program”)
时,您希望使用复数元素,但您的循环不会像现在这样让您达到目的。试试类似的东西
var installedPrograms = (from serverRole in xlServerRoles.Descendants("ServerRole")
where serverRole.Element("ServerType").Value == "Windows"
from program in serverRole.Element("Programs").Elements("Program")
select program.Value).ToList();
这是因为Xml中只有一个程序
,因此循环foreach
只需循环一次,以便进行更多纠正:
foreach (var prog in proggies.Descendants("Program").Select(p => new
{
programName = p.Value
}))
{
alInstalledPrograms.Add(prog.programName.ToString());
}
您可以直接在循环中获取子体Program
,而不是Programs
。对于缩短方法,您甚至不需要循环:
var alInstalledPrograms = xlServerRoles.Descendants("ServerRole")
.Where(prg => prg.Element("ServerType").Value == "Windows")
.Descendants("Program")
.Select(p => p.Value)
.ToList();
这是因为Xml中只有一个程序
,因此循环foreach
只需循环一次,以便进行更多纠正:
foreach (var prog in proggies.Descendants("Program").Select(p => new
{
programName = p.Value
}))
{
alInstalledPrograms.Add(prog.programName.ToString());
}
您可以直接在循环中获取子体Program
,而不是Programs
。对于缩短方法,您甚至不需要循环:
var alInstalledPrograms = xlServerRoles.Descendants("ServerRole")
.Where(prg => prg.Element("ServerType").Value == "Windows")
.Descendants("Program")
.Select(p => p.Value)
.ToList();
谢谢你的例子和描述。谢谢你的例子和描述。谢谢,在两种解释之间,那真的帮助很大。谢谢,在两种解释之间,那真的帮助很大。