繁体   English   中英

LINQ to XML难以计数

[英]Trouble getting count with LINQ to XML

我正在尝试查询以下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();

您想获得ProgramName而不是Programs

var programNameCount =  (from el in docx.Descendants("ProgramName")
                         where el.Value.ToLower().StartsWith("in.")
                         select el)
                        .Count();

我认为投影和过滤器中都不需要el.Element 此外,您要计算ProgramName的后代,其值以in.开头,而不是程序的后代。

var programNameCount = (from el in doc.Descendants("ProgramName")
                        where el.Value.ToLower().StartsWith("in.")
                        select el).Count();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM