C#-Fetch节点值和XML元素的相应计数

时间:2015-04-08 10:49:17

标签: c# xml linq

我有以下格式的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 =...
                     }

1 个答案:

答案 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()
                             });