使用Linq到XML时分组项的返回值

时间:2016-11-22 20:50:42

标签: c# linq-to-xml

我正在尝试在Visual Studio中使用Linq to XML - C#来拉取XML文件中的所有元素并按值分组。

这是我的XML代码:

<?xml version="1.0" encoding="utf-8"?>
 <topTerms>
   <topTerm>Cat</topTerm>
  <topTerm>Dog</topTerm>
  <topTerm>Cat</topTerm>
  <topTerm>Dog</topTerm>
  <topTerm>Cat</topTerm>
  <topTerm>Bird</topTerm>
  <topTerm>Cat</topTerm>
</topTerms>

然后我使用以下C#代码尝试拉取数据并按topTerm元素的值对其进行分组。

var top = 0;
        var topName = "";
        var topTermsUrl = Server.MapPath("XML/topTerms.xml");
        XDocument topTermsFile = XDocument.Load(topTermsUrl);
        var topTermDocuments = topTermsFile.Root
                        .Elements("topTerm")
                        .GroupBy(a => a.Value);
    foreach (var topTerm in topTermDocuments)
    {
        topName = topTerm.Value;
        top = topTerm.Count();
    }

但是,topTerm.Value不起作用。当我循环时,它将计算每个值的出现次数,但我无法计算字符串值。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

topTermIGrouping,特别是IGrouping<string, XElement>。因此它有一个属性Key,其中包含您分组的值:

foreach (var topTerm in topTermDocuments)
{
    topName = topTerm.Key; // Key used here
    top = topTerm.Count();
}

(我假设你在完整的代码中做的不仅仅是在循环中覆盖变量)。