Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Terkadang Anda ingin menulis kueri LINQ ke XML dengan filter kompleks. Misalnya, Anda mungkin harus menemukan semua elemen yang memiliki elemen turunan dengan nama dan nilai tertentu. Artikel ini memberikan contoh penulisan kueri dengan pemfilteran yang kompleks.
Contoh: Temukan dengan kueri berlapis dalam klausul Where
Contoh ini menunjukkan cara menemukan semua elemen PurchaseOrder yang memiliki:
- Elemen turunan
Addressyang atributTypenya sama dengan "Pengiriman". - Elemen turunan
Stateyang sama dengan "NY".
Ini menggunakan kueri berlapis dalam Where klausul Any, dan operator true mengembalikan jika koleksi memiliki elemen apa pun di dalamnya. Contohnya menggunakan file XML Sampel dokumen XML: Beberapa pesanan pembelian.
Untuk informasi selengkapnya tentang Any operator, lihat Operasi Quantifier (C#) dan Operasi Quantifier (Visual Basic) (Visual Basic).
XElement root = XElement.Load("PurchaseOrders.xml");
IEnumerable<XElement> purchaseOrders =
from el in root.Elements("PurchaseOrder")
where
(from add in el.Elements("Address")
where
(string)add.Attribute("Type") == "Shipping" &&
(string)add.Element("State") == "NY"
select add)
.Any()
select el;
foreach (XElement el in purchaseOrders)
Console.WriteLine((string)el.Attribute("PurchaseOrderNumber"));
Dim root As XElement = XElement.Load("PurchaseOrders.xml")
Dim purchaseOrders As IEnumerable(Of XElement) = _
From el In root.<PurchaseOrder> _
Where _
(From add In el.<Address> _
Where _
add.@Type = "Shipping" And _
add.<State>.Value = "NY" _
Select add) _
.Any() _
Select el
For Each el As XElement In purchaseOrders
Console.WriteLine(el.@PurchaseOrderNumber)
Next
Contoh ini menghasilkan output berikut:
99505
Contoh: Temukan di XML yang ada di namespace
Contoh berikut menunjukkan kueri yang sama seperti di atas, tetapi untuk XML yang ada di namespace. Untuk informasi lebih lanjut, lihat Ringkasan kumpulan nama XML.
Contoh ini menggunakan File XML sampel dokumen XML: Beberapa pesanan pembelian di namespace.
XElement root = XElement.Load("PurchaseOrdersInNamespace.xml");
XNamespace aw = "http://www.adventure-works.com";
IEnumerable<XElement> purchaseOrders =
from el in root.Elements(aw + "PurchaseOrder")
where
(from add in el.Elements(aw + "Address")
where
(string)add.Attribute(aw + "Type") == "Shipping" &&
(string)add.Element(aw + "State") == "NY"
select add)
.Any()
select el;
foreach (XElement el in purchaseOrders)
Console.WriteLine((string)el.Attribute(aw + "PurchaseOrderNumber"));
Imports <xmlns:aw='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = XElement.Load("PurchaseOrdersInNamespace.xml")
Dim purchaseOrders As IEnumerable(Of XElement) = _
From el In root.<aw:PurchaseOrder> _
Where _
(From add In el.<aw:Address> _
Where _
add.@aw:Type = "Shipping" And _
add.<aw:State>.Value = "NY" _
Select add) _
.Any() _
Select el
For Each el As XElement In purchaseOrders
Console.WriteLine(el.@aw:PurchaseOrderNumber)
Next
End Sub
End Module
Contoh ini menghasilkan output berikut:
99505