Elementen sorteren (LINQ naar XML)
U kunt uw resultaten sorteren wanneer u een query uitvoert op XML. Dit artikel bevat twee voorbeelden: de eerste sorteert resultaten voor XML die zich niet in een naamruimte bevindt en de tweede sorteert hetzelfde, maar voor XML die zich in een naamruimte bevindt.
Voorbeeld: Een query schrijven waarmee de resultaten worden gesorteerd
In dit voorbeeld ziet u hoe u een query schrijft waarmee de resultaten worden gesorteerd. Het maakt gebruik van xml-voorbeeld-XML-bestand : numerieke gegevens.
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
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
0.99
4.95
6.99
24.50
29.00
66.00
89.99
Voorbeeld: Een query schrijven in een naamruimte die de resultaten sorteert
In het volgende voorbeeld ziet u dezelfde query voor XML die zich in een naamruimte bevindt. Het maakt gebruik van XML-voorbeeld-XML-bestand met xml-documenten: numerieke gegevens in een naamruimte.
Zie het overzicht van naamruimten voor meer informatie.
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
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
0.99
4.95
6.99
24.50
29.00
66.00
89.99