Procédure : calculer des valeurs intermédiaires
Cet exemple montre comment calculer des valeurs intermédiaires qui peuvent être utilisées dans le tri, le filtrage et la sélection.
Exemple
L'exemple suivant utilise la clause Let.
Cet exemple utilise le document XML suivant : Exemple de fichier XML : Données numériques (LINQ to XML).
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
Ce code génère la sortie suivante :
55.92
73.50
89.99
198.00
435.00
L'exemple suivant illustre la même requête pour du code XML qui est dans un espace de noms. Pour plus d'informations, consultez Utilisation des espaces de noms XML.
Cet exemple utilise le document XML suivant : Exemple de fichier XML : Données numériques dans un espace de noms.
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
Ce code génère la sortie suivante :
55.92
73.50
89.99
198.00
435.00