Pilih XElements unik (berdasarkan atribut) menggunakan LinqToXml

Saya memiliki XML di mana saya memiliki beberapa tag <testcase>. Ada yang mempunyai atribut "ident" dengan nilai "pr", ada pula yang tidak.

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

Saya ingin menanyakan kasus uji yang berisi atribut ident dengan nilai "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();

Kueri saat ini menghasilkan 0. Apa masalahnya?


person Juri Bogdanov    schedule 11.09.2012    source sumber


Jawaban (1)


Sepertinya masalah casing sederhana! "pr" vs "PR"! Saya juga merekomendasikan penggunaan Any daripada 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"));
person ColinE    schedule 11.09.2012
comment
Ya, terima kasih :) Saya benar-benar melakukan kesalahan sederhana.. huruf kecil pr, bukan PR. Dan terima kasih atas saran mengenai kata kunci apa pun - person Juri Bogdanov; 11.09.2012