0
我有一個XDocument對象,我嘗試從中提取指定特定條件的所有List。從XDocument中使用where子句提取XElements的列表
以下是我的XML
<MyQueue xmlns:ns0 = "http://myprogram">
<ns0:QueueReport>
<ns0:number>001</ns0:number>
<ns0:id>A</ns0:id>
<ns0:name>ABC</ns0:name>
<ns0:hours>1</ns0:hours>
</ns0:QueueReport>
<ns0:QueueReport>
<ns0:number>001</ns0:number>
<ns0:id>B</ns0:id>
<ns0:name>ABC</ns0:name>
<ns0:hours>2</ns0:hours>
</ns0:QueueReport>
<ns0:QueueReport>
<ns0:number>001</ns0:number>
<ns0:id>B</ns0:id>
<ns0:name>ABC</ns0:name>
<ns0:hours>10</ns0:hours>
</ns0:QueueReport>
<ns0:QueueReport>
<ns0:number>002</ns0:number>
<ns0:id>A</ns0:id>
<ns0:name>ABC</ns0:name>
<ns0:hours>12</ns0:hours>
</ns0:QueueReport>
<ns0:QueueReport>
<ns0:number>003</ns0:number>
<ns0:id>A</ns0:id>
<ns0:name>ABC</ns0:name>
<ns0:hours>20</ns0:hours>
</ns0:QueueReport>
</ns0:MyQueue>
上述XML是在XDocument對象XDOC說。我寫了以下內容以提取節點及其子節點。
XNamespace b = @"http://myprogram";
var elements = from e xdoc.Elements(b + "MyQueue")
where e.Element(b + "QueueReport").Element(b + "number").Value == "001"
&& e.Element(b + "QueueReport").Element(b + "id").Value == "B"
select e.Elements(b + "QueueReport").ToList();
(請原諒錯別字,如果任何代碼,它不是在編輯器中寫的)
元素變量沒有任何結果,理想我本來預計在下面的兩個元素名單。
<ns0:QueueReport>
<ns0:number>001</ns0:number>
<ns0:id>B</ns0:id>
<ns0:name>ABC</ns0:name>
<ns0:hours>2</ns0:hours>
</ns0:QueueReport>
<ns0:QueueReport>
<ns0:number>001</ns0:number>
<ns0:id>B</ns0:id>
<ns0:name>ABC</ns0:name>
<ns0:hours>10</ns0:hours>
</ns0:QueueReport>
請大家幫忙,我對Linq很陌生,對於怎樣才能做到這一點還有點線索。
我得到這個工作,只是爲了記錄這對於任何將來使用,並且在這裏回答這個問題是。 – user2179891