我有一個簡單的XML文檔在我的應用程序的設置,如下所示:查詢XML屬性使用LINQ
<Settings>
<Server>
<Id>1</Id>
<Name>SRV123456</Name>
<Par Type="Desktop" Region="Western">12</Par>
<Par Type="Laptop" Region="Western">15</Par>
<Par Type="Desktop" Region="Eastern">22</Par>
<Par Type="Laptop" Region="Eastern">25</Par>
<State>WA</State>
</Server>
</Settings>
,我試圖用C#和LINQ查詢它,使用此代碼:
xelement = XElement.Load(startpath + "\\Settings.xml");
var sn = from sl in xelement.Elements("Server")
where (string)sl.Element("State") == "WA"
where (string)sl.Element("Par").Attribute("Region") == "Western"
where (string)sl.Element("Par").Attribute("Type") == "Desktop"
select sl;
foreach (XElement xele in sn)
{
Console.WriteLine(xele);
Console.WriteLine(xele.Element("Par").Value);
}
這適用於第一個「Par」值,並將返回「12」。但是,如果我改變
where (string)sl.Element("Par").Attribute("Type") == "Desktop"
到
where (string)sl.Element("Par").Attribute("Type") == "Laptop"
它不返回任何結果...我缺少什麼?
它試圖混合兩種查詢風格真的很醜。堅持任一(最好 - 代碼版本) –
'元素'返回文檔順序中的第一個元素。該元素上的屬性將是被檢查的屬性。 – Tim
沒有理由一個人會工作,另一個不會。仔細檢查你的拼寫和大寫/小寫字母。 – jdweng