Share via


Tussenliggende waarden berekenen (LINQ naar XML)

In dit artikel wordt beschreven hoe u tussenliggende waarden kunt berekenen voor gebruik in sorteren, filteren en selecteren in C# en Visual Basic.

Voorbeeld: De component gebruiken let om te berekenen op basis van elementgegevens

In het volgende voorbeeld wordt de let component gebruikt om producten van numerieke waarden van elementen te berekenen. Het maakt gebruik van xml-voorbeeld-XML-bestand : numerieke gegevens.

XElement root = XElement.Load("Data.xml");
IEnumerable<decimal> extensions =
    from el in root.Elements("Data")
    let extension = (decimal)el.Element("Quantity") * (decimal)el.Element("Price")
    where extension >= 25
    orderby extension
    select extension;
foreach (decimal ex in extensions)
    Console.WriteLine(ex);
Dim root As XElement = XElement.Load("Data.xml")
Dim extensions As IEnumerable(Of Decimal) = _
    From el In root.<Data> _
    Let extension = CDec(el.<Quantity>.Value) * CDec(el.<Price>.Value) _
    Where extension > 25 _
    Order By extension _
    Select extension
For Each ex As Decimal In extensions
    Console.WriteLine(ex)
Next

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

55.92
73.50
89.99
198.00
435.00

Voorbeeld: Berekenen op basis van XML die zich in een naamruimte bevindt

In het volgende voorbeeld ziet u dezelfde query als voorheen, maar voor XML die zich in een naamruimte bevindt. Er wordt gebruikgemaakt van het XML-voorbeeld-XML-bestand van het XML-document : numerieke gegevens in een naamruimte.

Zie het overzicht van naamruimten voor meer informatie.

XElement root = XElement.Load("DataInNamespace.xml");
XNamespace ad = "http://www.adatum.com";
IEnumerable<decimal> extensions =
    from el in root.Elements(ad + "Data")
    let extension = (decimal)el.Element(ad + "Quantity") * (decimal)el.Element(ad + "Price")
    where extension >= 25
    orderby extension
    select extension;
foreach (decimal ex in extensions)
    Console.WriteLine(ex);
Imports <xmlns="http://www.adatum.com">

Module Module1
    Sub Main()
        Dim root As XElement = XElement.Load("DataInNamespace.xml")
        Dim extensions As IEnumerable(Of Decimal) = _
            From el In root.<Data> _
            Let extension = CDec(el.<Quantity>.Value) * CDec(el.<Price>.Value) _
            Where extension > 25 _
            Order By extension _
            Select extension
        For Each ex As Decimal In extensions
            Console.WriteLine(ex)
        Next
    End Sub
End Module

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

55.92
73.50
89.99
198.00
435.00

Zie ook