2015-06-25 3 views
1

У меня есть этот документ XMLC# XML -> словарь <строка Кортеж <строка, строка, строка >> в Linq

<?xml version="1.0" encoding="utf-8"?> 
<Tag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <data ID="1" Tag1="A" Tag2="123" Tag3="C" /> 
    <data ID="2" Tag1="AB" Tag2="12C3" Tag3="D" /> 
</Tag> 

Я хочу преобразовать документ в словарь Тип <string, Tuple<string,string,string>>

Так в основном ID -> Tag1, Tag2, Вкладка3

Я знаю, что есть много, что делать Key -> Значение, как это:

var configDictionary = xdoc.Descendants("data").ToDictionary(
      datum => datum.Attribute("ID").Value, 
      datum => datum.Attribute("value").Value); 

Но мне нужно, чтобы значение взяло 3 строки.

+1

Итак, во втором выражении лямбда создайте «Tuple » из трех атрибутов, а не только одну строку. Что вы пробовали с точки зрения этого и что произошло? –

ответ

1

Это довольно просто. Все, что вам не хватает это объявление кортежа с помощью Tuple.Create:

var configDictionary = xdoc.Descendants("data") 
      .ToDictionary(
        datum => datum.Attribute("ID").Value, 
        datum => Tuple.Create(datum.Attribute("Tag1").Value, 
             datum.Attribute("Tag2").Value, 
             datum.Attribute("Tag3").Value)); 

Примечание это не имеет никакого проверки, что атрибуты на самом деле существует, который будет необходимо добавить.

+0

Превосходно! это то, что я искал. Благодаря! –

Смежные вопросы