ฉันเจอคำค้นหาทั้งสองนี้ใน VS IntelliSense ฉันพยายาม googling ความแตกต่างระหว่างพวกเขาและไม่ได้รับคำตอบที่ชัดเจน หนึ่งในสิ่งเหล่านี้มีประสิทธิภาพที่ดีที่สุดด้วยไฟล์ XML ขนาดเล็กและขนาดกลาง ขอบคุณ
ฉันเจอคำค้นหาทั้งสองนี้ใน VS IntelliSense ฉันพยายาม googling ความแตกต่างระหว่างพวกเขาและไม่ได้รับคำตอบที่ชัดเจน หนึ่งในสิ่งเหล่านี้มีประสิทธิภาพที่ดีที่สุดด้วยไฟล์ XML ขนาดเล็กและขนาดกลาง ขอบคุณ
คำตอบ:
Elements
ค้นหาองค์ประกอบเหล่านั้นเท่านั้นที่เป็นลูกหลานโดยตรงเช่นเด็ก ๆ ในทันที
Descendants
พบเด็กทุกระดับไม่ว่าจะเป็นเด็กแกรนด์เด็ก ฯลฯ ...
นี่คือตัวอย่างที่แสดงให้เห็นถึงความแตกต่าง:
<?xml version="1.0" encoding="utf-8" ?>
<foo>
<bar>Test 1</bar>
<baz>
<bar>Test 2</bar>
</baz>
<bar>Test 3</bar>
</foo>
รหัส:
XDocument doc = XDocument.Load("input.xml");
XElement root = doc.Root;
foreach (XElement e in root.Elements("bar"))
{
Console.WriteLine("Elements : " + e.Value);
}
foreach (XElement e in root.Descendants("bar"))
{
Console.WriteLine("Descendants : " + e.Value);
}
ผลลัพธ์:
องค์ประกอบ: ทดสอบ 1 องค์ประกอบ: ทดสอบ 3 ลูกหลาน: การทดสอบ 1 ลูกหลาน: การทดสอบ 2 ลูกหลาน: ทดสอบ 3
ถ้าคุณรู้ว่าองค์ประกอบที่คุณต้องการเป็นเด็กทันทีแล้วคุณจะได้รับประสิทธิภาพที่ดีขึ้นถ้าคุณใช้แทนElements
Descendants
Descendants
จะค้นหาทรีย่อยขององค์ประกอบปัจจุบันทั้งหมดสำหรับชื่อที่ระบุ (หรือจะส่งคืนแผนผังแบบแบนหากไม่มีชื่อ) ในขณะที่Elements
ค้นหาเฉพาะลูกที่อยู่ในองค์ประกอบปัจจุบันเท่านั้น