Share via


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

Consulte también