Freigeben über


Gewusst wie: Sortieren von Elementen (LINQ to XML)

Sie können Ihre Ergebnisse sortieren, wenn Sie XML abfragen. Dieser Artikel enthält zwei Beispiele: Das erste sortiert Ergebnisse für XML, das sich nicht in einem Namespace befindet, und das zweite führt die gleiche Sortierung aus, aber für XML, das sich in einem Namespace befindet.

Beispiel: Schreiben einer Abfrage, die ihre Ergebnisse sortiert

In diesem Beispiel wird gezeigt, wie Sie eine Abfrage schreiben können, die ihre Ergebnisse sortiert. Es wird das XML-Dokument Beispiel-XML-Datei: Numerische Daten verwendet.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

0.99
4.95
6.99
24.50
29.00
66.00
89.99

Beispiel: Schreiben einer Abfrage in einen Namespace, der die Ergebnisse sortiert

Im folgenden Beispiel wird dieselbe Abfrage für XML in einem Namespace gezeigt. Es wird das XML-Dokument Beispiel-XML-Datei: Numerische Daten in einem Namespace verwendet.

Weitere Informationen finden Sie unter Übersicht über Namespaces.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

0.99
4.95
6.99
24.50
29.00
66.00
89.99

Siehe auch