Tôi có một tài liệu XML có chứa một loạt các nút mục mà trông như thế này:Cách tốt nhất để truy vấn XDocument bằng LINQ?
<data>
<item>
<label>XYZ</label>
<description>lorem ipsum</description>
<parameter type="id">123</parameter>
<parameter type="name">Adam Savage</parameter>
<parameter type="zip">90210</parameter>
</item>
</data>
và tôi muốn LINQ nó thành một loại vô danh như thế này:
var mydata =
(from root in document.Root.Elements("item")
select new {
label = (string)root.Element("label"),
description = (string)root.Element("description"),
id = ...,
name = ...,
zip = ...
});
cách tốt nhất là gì thế nào để kéo từng loại tham số theo giá trị của thuộc tính 'type' của nó? Vì có nhiều yếu tố tham số, bạn hãy kết hợp với root.Elements("parameter")
là một bộ sưu tập. Cách tốt nhất tôi có thể nghĩ để làm điều đó là như thế này bằng phương pháp dưới đây nhưng tôi cảm thấy như phải có một cách tốt hơn?
(from c in root.Descendants("parameter") where (string)c.Attribute("type") == "id"
select c.Value).SingleOrDefault()
vâng có vẻ như một cách tiếp cận tốt Jon ... vấn đề khác tôi phải tranh luận là đôi khi các giá trị là các chuỗi rỗng để có một phương thức trợ giúp để xử lý cả truy vấn thuộc tính và xử lý một cách duyên dáng dàn diễn viên vào đúng loại trong sự kiện của chuỗi rỗng có thể có ý nghĩa nhất, cảm ơn – snappymcsnap