Bagikan melalui


Cara menghitung nilai perantara (LINQ ke XML)

Artikel ini menunjukkan cara menghitung nilai perantara untuk digunakan dalam menyortir, memfilter, dan memilih dalam C# dan Visual Basic.

Contoh: Gunakan let klausul untuk menghitung berdasarkan data elemen

Contoh berikut menggunakan klausul let untuk menghitung produk nilai numerik dari elemen. Contoh ini menggunakan dokumen XML File XML sampel: Data numerik.

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

Contoh ini menghasilkan output berikut:

55.92
73.50
89.99
198.00
435.00

Contoh: Hitung dari XML yang ada di namespace layanan

Contoh berikut menunjukkan kueri yang sama seperti sebelumnya, tetapi untuk XML yang ada di namespace layanan. Ini menggunakan file XML Sampel dokumen XML: Data numerik dalam namespace layanan.

Untuk informasi lebih lanjut, lihat Ringkasan kumpulan nama XML.

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

Contoh ini menghasilkan output berikut:

55.92
73.50
89.99
198.00
435.00

Lihat juga