Partager via


Comment trier des éléments (LINQ to XML)

Vous pouvez trier vos résultats lorsque vous interrogez XML. Cet article fournit deux exemples : le premier trie les résultats pour XML qui n’est pas dans un espace de noms, et le second effectue le même tri, mais pour le code XML qui est dans un espace de noms.

Exemple : Écrire une requête qui trie ses résultats

Cet exemple montre comment écrire une requête qui trie ses résultats. Il utilise le document XML Exemple de fichier XML : données numériques.

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

Cet exemple produit la sortie suivante :

0.99
4.95
6.99
24.50
29.00
66.00
89.99

Exemple : Écrire une requête dans un espace de noms qui trie ses résultats

L’exemple suivant montre la même requête pour XML qui se trouve dans un espace de noms. Il utilise un document XML Exemple de fichier XML : données numériques dans un espace de noms.

Pour plus d’informations, consultez vue d’ensemble des espaces de noms.

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

Cet exemple produit la sortie suivante :

0.99
4.95
6.99
24.50
29.00
66.00
89.99

Voir aussi