Как получить другой указанный атрибут с помощью группировки из LINQ в XML - PullRequest
0 голосов
/ 08 сентября 2011

Я использую LINQ to XML.

Это строка, с которой у меня возникают проблемы:

var objectives = (from c in xdoc.Descendents("Condition")
                  group c by (int)c.Attribute("ObjectiveID") into k
                  select k).ToDictionary(e=> e.Key, // HERE I MUST PUT ANOTHER ATTRIBUTE FROM c)

Где я оставлю комментарий, мне нужно получить другой атрибут (c.Attribute ( "Цель")).Но я не могу получить доступ к свойствам c и получить его.

1 Ответ

1 голос
/ 08 сентября 2011

Группировка может содержать более одного элемента на группу. С другой стороны, словарь может содержать только одно значение для каждого ключа. Вы, вероятно, хотите ToLookup(), который допускает перечисление значений для каждого ключа:

var objectives = (from c in xdoc.Descendents("Condition")
                  group c by (int)c.Attribute("ObjectiveID") into k
                  select k).ToLookup(e=> e.Key, e => e.Select( x=> x.Objective));

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

var objectives = (from c in xdoc.Descendents("Condition")
                  group c by (int)c.Attribute("ObjectiveID") into k
                  select k).ToDictionary(e=> e.Key, e => e.First().Objective));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...