我有以下格式的XML。此XML已分配给XDocument对象。
<root>
<event>
<command>A1</command>
</event>
<event>
<command>B1</command>
</event>
<event>
<command>A1</command>
</event>
<event>
<command>C1</command>
</event>
</root>
我需要获取所有<command>
个节点的节点值以及每个节点发生的次数。在上面的例子中,我想要的输出是
A1 2
B1 1
C1 1
我还需要将上述结果转到对象中,如下所示
var cmdList=from appinfo in doc.Root.Elements()
select new
{
Cname= ...
CCount =...
}
答案 0 :(得分:3)
使用GroupBy: -
var result = xdoc.Descendants("event")
.Where(x => !String.IsNullOrEmpty((string)x.Element("command")))
.GroupBy(x => (string)x.Element("command"))
.Select(x => new
{
Value = x.Key,
Count = x.Count()
});