2012-09-11 72 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關鍵字的建議 –