Come calcolare valori intermedi (LINQ to XML)
Questo articolo illustra come calcolare valori intermedi da usare per l'ordinamento, il filtro e la selezione in C# e Visual Basic.
Esempio: usare la clausola let
per eseguire un calcolo in base ai dati degli elementi
Nell'esempio seguente viene utilizzata la clausola let
per calcolare i prodotti di valori numerici dagli elementi. Viene usato il documento XML File XML di esempio: Dati numerici.
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
Nell'esempio viene prodotto l'output seguente:
55.92
73.50
89.99
198.00
435.00
Esempio: calcolare da XML incluso in uno spazio dei nomi
Nell'esempio seguente viene illustrata la stessa query precedente ma per XML che si trova in uno spazio dei nomi. Viene usato il documento XML File XML di esempio: Dati numerici in uno spazio dei nomi.
Per altre informazioni, vedere Panoramica degli spazi dei nomi.
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
Nell'esempio viene prodotto l'output seguente:
55.92
73.50
89.99
198.00
435.00