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