我正在尝试查询以下XDOC以验证有多少元素包含以“in”开头的值。我期望返回4但它总是返回一个???
string xml = @"<Programs><ProgramName>in.sy.prog.n.r1.test-package</ProgramName><ProgramName>un.sy.nopr.n.r1.test-package</ProgramName><ProgramName>sr.pt.mang.n.r1.test-package</ProgramName><ProgramName>in.sy.prog.n.r1.test-packageENCAP</ProgramName><ProgramName>in.sy.prog.n.r1.test-packageENCAPTwo</ProgramName><ProgramName>in.sy.prog.n.r1.test-package2</ProgramName></Programs>";
System.Xml.Linq.XDocument doc = XDocument.Parse(xml);
var programNameCount =
(from el in doc.Descendants("Programs")
where el.Element("ProgramName").Value.ToLower().StartsWith("in.")
select el.Element("ProgramName")).Count();
答案 0 :(得分:2)
您希望获得ProgramName
而不是Programs
var programNameCount = (from el in docx.Descendants("ProgramName")
where el.Value.ToLower().StartsWith("in.")
select el)
.Count();
答案 1 :(得分:0)
我认为在投影和过滤器中都不需要el.Element
。此外,您想要计算ProgramName的后代,其值以in.
开头,而不是程序的后代。
var programNameCount = (from el in doc.Descendants("ProgramName")
where el.Value.ToLower().StartsWith("in.")
select el).Count();