Ordenación de elementos (LINQ to XML)
Puede ordenar los resultados al consultar XML. En este artículo se proporcionan dos ejemplos: en el primero se ordenan los resultados de XML que no están en un espacio de nombres y en el segundo se realiza la misma ordenación, pero para XML que sí está en un espacio de nombres.
Ejemplo: Escribir una consulta que ordene sus resultados
Este ejemplo muestra cómo escribir una consulta que ordene sus resultados. Usa el documento XML Ejemplo de archivo XML: Datos numéricos.
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
Este ejemplo produce el siguiente resultado:
0.99
4.95
6.99
24.50
29.00
66.00
89.99
Ejemplo: Escribir una consulta en un espacio de nombres que ordene sus resultados
El siguiente ejemplo muestra la misma consulta sobre un XML que se encuentra en un espacio de nombres. Se utiliza el documento XML Ejemplo de archivo XML: Datos numéricos en un espacio de nombres.
Para más información, consulte Introducción a los espacios de nombres.
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
Este ejemplo produce el siguiente resultado:
0.99
4.95
6.99
24.50
29.00
66.00
89.99