C# 如何使用从LINQ到XML的分组来获取另一个指定属性

C# 如何使用从LINQ到XML的分组来获取另一个指定属性,c#,linq-to-xml,C#,Linq To Xml,我正在使用LINQ转换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)

我正在使用LINQ转换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(“Objective”))。但是我无法访问c属性并获取该属性。

一个分组可能包含多个项目。另一方面,字典只能为每个键包含一个值。您可能需要允许枚举每个键的值:

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));

首先给出一些xml示例