У меня есть документ XML, который содержит ряд элементов узлов, которые выглядят следующим образом:Лучший способ запроса XDocument с 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>
, и я хочу Linq его в анонимный тип, как это:
var mydata =
(from root in document.Root.Elements("item")
select new {
label = (string)root.Element("label"),
description = (string)root.Element("description"),
id = ...,
name = ...,
zip = ...
});
Что лучший способ вытащить каждый тип параметра в соответствии со значением его атрибута типа? Поскольку есть много элементов параметров, вы заканчиваете с root.Elements("parameter")
, который является коллекцией. Лучший способ, которым я могу это сделать, - это сделать это ниже, но я чувствую, что должен быть лучший способ?
(from c in root.Descendants("parameter") where (string)c.Attribute("type") == "id"
select c.Value).SingleOrDefault()
Да, это похоже на хороший подход. Джон ... Другая проблема, с которой мне приходится сталкиваться, заключается в том, что иногда значения представляют собой пустые строки, поэтому у них есть вспомогательный метод для обработки как запроса атрибута, так и грамотно обрабатывающего приведение к правильному типу в событие пустых строк может иметь наибольший смысл, спасибо – snappymcsnap