如何排序元素 (LINQ to XML)
您可以在查詢 XML 時排序結果。 本文提供兩個範例:第一個排序不在命名空間中的 XML 結果,第二個執行相同的排序,但對象為在命名空間中的 XML。
範例:撰寫排序結果的查詢
此範例顯示如何撰寫排序其結果的查詢。 此範例會使用 XML 文件的範例 XML 檔案:數值資料。
XElement root = XElement.Load("Data.xml");
IEnumerable<decimal> prices =
from el in root.Elements("Data")
let price = (decimal)el.Element("Price")
orderby price
select price;
foreach (decimal el in prices)
Console.WriteLine(el);
Dim root As XElement = XElement.Load("Data.xml")
Dim prices As IEnumerable(Of Decimal) = _
From el In root.<Data> _
Let price = Convert.ToDecimal(el.<Price>.Value) _
Order By (price) _
Select price
For Each el As Decimal In prices
Console.WriteLine(el)
Next
這個範例會產生下列輸出:
0.99
4.95
6.99
24.50
29.00
66.00
89.99
範例:撰寫可在命名空間中排序結果的查詢
下列範例示範不在命名空間中的相同 XML 查詢。 此範例會使用 XML 文件的範例 XML 檔案:命名空間中的數值資料。
如需詳細資訊,請參閱命名空間概觀。
XElement root = XElement.Load("DataInNamespace.xml");
XNamespace aw = "http://www.adatum.com";
IEnumerable<decimal> prices =
from el in root.Elements(aw + "Data")
let price = (decimal)el.Element(aw + "Price")
orderby price
select price;
foreach (decimal el in prices)
Console.WriteLine(el);
Imports <xmlns='http://www.adatum.com'>
Module Module1
Sub Main()
Dim root As XElement = XElement.Load("DataInNamespace.xml")
Dim prices As IEnumerable(Of Decimal) = _
From el In root.<Data> _
Let price = Convert.ToDecimal(el.<Price>.Value) _
Order By (price) _
Select price
For Each el As Decimal In prices
Console.WriteLine(el)
Next
End Sub
End Module
這個範例會產生下列輸出:
0.99
4.95
6.99
24.50
29.00
66.00
89.99