2012-09-11 77 views
0

我有一个XML,其中有几个<testcase>标签。其中一些具有值“pr”的属性“ident”,有些没有。使用LinqToXml选择独特的XElements(按属性)

<testcase> 
    <teststep ident="Preparation" result="na">blabla</teststep> 
    <teststep ident="" result="pass">blabla</teststep> 
    <teststep ident="-" result="na">blabla</teststep> 
    <teststep ident="Info" result="na">blabla</teststep> 
    <teststep ident="1" result="pass">blabla</teststep> 
    <teststep ident="2" result="pass">blabla</teststep> 
    <teststep ident="3" result="pass">blabla</teststep> 
    <teststep ident="4" result="fail">blabla</teststep> 
    <teststep ident="PR" result="na">blabla</teststep> 
    <verdict result="fail" /> 
</testcase> 

我想查询其中包含的ident与价值“PR”属性测试用例

IEnumerable<XElement> failedPRTCs = report.Descendants("testcase").Where(t => t.Element("verdict").Attribute("result").Value == "fail" && t.Descendants("teststep").Where(ts=> ts.Attribute("ident").Value == "pr").ToList().Count > 0).ToList(); 

当前查询返回0。请告诉我这个问题?

回答

1

看起来像一个简单的套管问题! "pr" vs "PR"!我也建议使用Any而不是count > 0

IEnumerable<XElement> failedPRTCs = report.Descendants("testcase") 
    .Where(t => t.Element("verdict").Attribute("result").Value == "fail" && 
      t.Descendants("teststep").Any(ts=> ts.Attribute("ident").Value == "PR")); 
+0

是的,谢谢:)我真的没有简单的错误..小写的“公关”,而不是“公关”。并感谢您对Any关键字的建议 –