У меня есть узлы XML, как показано ниже.linq to XML: количество уникальных значений атрибутов для каждой группы
...
<ParentNode>
<Node id="2343" name="some name" mode="Some Mode">
//Some child nodes here
</Node>
<Node id="2344" name="some other name" mode="Some Mode">
//Some child nodes here
</Node>
...
</ParentNode>
<ParentNode>
<Node id="2343" name="some name" mode="Some Other Mode">
//Some child nodes here
</Node>
<Node id="2344" name="some other name" mode="Some Mode">
//Some child nodes here
</Node>
</ParentNode>
....
Что мне нужно
id name distinct-mode-count
--------------------------------------------
2343 some name 2
2344 some other name 1
Я попытался ниже, чтобы получить это.
XElement myXML = XElement.Load(filePath);
IEnumberable<XElement> parentNodes = myXML.Descendants("ParentNode");
var nodeAttributes = parentNodes.Select(le => le.Descendants("Node")
.GroupBy(x => new {
id = x.Attribute("id").Value,
name = x.Attribute("name").Value
}).Select(g => new {
id = g.Key.id,
name = g.Key.name,
distinct_mode_count = // This is where I am stuck
}));
Я не уверен, как получить distinct_mode_count
в приведенном выше запросе.
Редактировать
мне нужно определенное значение атрибута подсчитывать для атрибута "mode"
, независимо от ParentNode
они находятся.
Спасибо за быстрый ответ @ Джон тарелочкам. Мне нужен отдельный счетчик во всех родительских узлах. Тот же узел/родительский узел не имеет значения. –
@DevrajGadhavi: Не ясно, что вы подразумеваете под этим, и это не ясно в вашем вопросе. Измените свой вопрос, чтобы уточнить его. –
@DevrajGadhavi: Я немного отредактировал свой ответ и поместил его в короткую, но полную программу, которая дает желаемые результаты. –