Выберите уникальные XElements (по атрибуту), используя LinqToXml

У меня есть XML, где у меня есть несколько <testcase> теги. Некоторые из них имеют атрибут "идент" со значением "пр", некоторые нет.

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

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" против "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"));
Другие вопросы по тегам