0

我有一个 XML,其中有几个<testcase>标签。其中一些具有值为“pr”的属性“ident”,而另一些则没有。

<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>

我想查询包含值为“pr”的 ident 属性的测试用例

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。有什么问题?

4

1 回答 1

1

看起来像一个简单的套管问题!"pr""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"));
于 2012-09-11T07:59:36.140 回答