Я использую LINQ to XML для анализа XML-документа и создания нескольких объектов из этого XML. Один из объектов имеет словарь как свойство, и мне нужно заполнить словарь из XML. Однако я не уверен в синтаксисе, который требуется для этого.Заполнение словаря LINQ to XML
Я знаю, что мне нужно получить значения атрибута и каким-то образом назначить им ключ/значение в словаре.
Как это сделать?
У меня есть класс модели, как это:
public class Statistics
{
string Name { get; set; }
public IDictionary<string, string> Information { get; set; }
}
и XML, как это:
<section>
<parameter name="this is a key" value="this is a value" />
<parameter name="this is a key 2" value="this is a value 2" />
</section>
В моем запросе LINQ мне нужно, чтобы установить ключ и значение из атрибутов name
и value
.
Из моего понимания, что нужно сделать что-то вдоль линий:
.ToDictionary(x => x.name, x => x.value);
Но я не уверен, как применить это на мой запрос LINQ, следующий код является частью большего LINQ для запроса XML :
.Select(x => new Statistics
{
Name = x.Attribute("name").Value,
Information = What goes here? .Select.Attributes? .ToDictionary(x => x.name, x => x.value);
Единственная проблема состоит в том, что я уже назвал XDocument.Load. Есть ли другой способ, не загружая его дважды? – user9993
@ user9993 'XDocument.Load (имя_файла)' возвращает 'XElement'. Таким образом, вы можете использовать любой подходящий XElement, такой как 'p.Descendants (« parameter »). ToDictionary (.....)' – Eser