Ho un documento XML che contiene una serie di nodi oggetto che assomigliano a questo:Il modo migliore per interrogare XDocument con 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>
e voglio LINQ in un tipo anonimo come questo:
var mydata =
(from root in document.Root.Elements("item")
select new {
label = (string)root.Element("label"),
description = (string)root.Element("description"),
id = ...,
name = ...,
zip = ...
});
Qual è il modo migliore tirare ogni tipo di parametro in base al valore del suo attributo 'tipo'? Dato che ci sono molti elementi di parametro, si finisce con root.Elements("parameter")
che è una raccolta. Il modo migliore in cui posso pensare di farlo è simile al seguente metodo, ma mi sembra che ci debba essere un modo migliore?
(from c in root.Descendants("parameter") where (string)c.Attribute("type") == "id"
select c.Value).SingleOrDefault()
sì, sembra un buon approccio Jon ... l'altro problema che devo affrontare è che a volte i valori sono stringhe vuote, quindi avere un metodo di supporto per gestire sia la query di attributo che gestire con garbo il cast nel tipo corretto nel l'evento di stringhe vuote potrebbe essere più sensato, grazie – snappymcsnap