Come ordinare gli elementi (LINQ to XML)
È possibile ordinare i risultati quando si esegue una query su XML. Questo articolo fornisce due esempi: il primo ordina i risultati per l'XML che non è incluso in uno spazio dei nomi e il secondo esegue lo stesso ordinamento ma per un XML che è incluso in uno spazio dei nomi.
Esempio: Scrivere una query che ordina i risultati
In questo esempio viene illustrato come scrivere una query che ordina i relativi risultati. Usa il documento XML di esempio seguente: File XML di esempio: Dati numerici.
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
Nell'esempio viene prodotto l'output seguente:
0.99
4.95
6.99
24.50
29.00
66.00
89.99
Esempio: Scrivere una query in uno spazio dei nomi che ordina i relativi risultati
L'esempio seguente illustra la stessa query per un XML che non è incluso in uno spazio dei nomi. Usa il documento XML seguente: File XML di esempio: dati numerici in uno spazio dei nomi.
Per altre informazioni, vedere Panoramica degli spazi dei nomi.
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
Nell'esempio viene prodotto l'output seguente:
0.99
4.95
6.99
24.50
29.00
66.00
89.99