<states_Page>
<states>
<state id="sectionenable" systemstate="n" focuscontrol="" default="">
</state>
</states>
<states>
<state id="controlenable" systemstate="n" focuscontrol="" default="">
</state>
</states>
<states>
<state id="controldisable" systemstate="n" focuscontrol="" default="">
</state>
</states>
<states>
<state id="controldisable2" systemstate="n" focuscontrol="" default="">
</state>
</states>
<states>
<state id="sectionenable2" systemstate="n" focuscontrol="" default="">
</state>
</states>
<states>
<state id="sectionenable" systemstate="n" focuscontrol="" default="">
</state>
</states>
</states_Page>
根元素下有 6 个元素。
我想要具有不同属性名称的节点。
所以我只需要返回 5 个具有不同属性值的元素。我尝试过 LINQ,但它单独返回不同的属性值。但我需要整个元素。
var ds = (from ele in root.Elements("states").Elements("state")
select ele.Attribute("id").Value).Distinct();
因此,请帮助我在一行查询中获取整个元素。
试试这个:-
var result = xdoc.Root.Descendants("states")
.GroupBy(x => x.Element("state").Attribute("id").Value)
.Select(x => x.First());
如果你想获取元素而不是节点,你可以使用这样的anonymous
类型:-
var result = xdoc.Root.Descendants("states")
.GroupBy(x => x.Element("state").Attribute("id").Value)
.Select(x =>
{
var firstNode = x.First().Element("state");
return new
{
StateId = firstNode.Attribute("id").Value,
SystemState = firstNode.Attribute("systemstate").Value,
Focuscontrol = firstNode.Attribute("focuscontrol").Value,
Default = firstNode.Attribute("default").Value
};
});