我正在尝试在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不起作用。当我循环时,它将计算每个值的出现次数,但我无法计算字符串值。有什么想法吗?
答案 0 :(得分:0)
topTerm
是IGrouping
,特别是IGrouping<string, XElement>
。因此它有一个属性Key
,其中包含您分组的值:
foreach (var topTerm in topTermDocuments)
{
topName = topTerm.Key; // Key used here
top = topTerm.Count();
}
(我假设你在完整的代码中做的不仅仅是在循环中覆盖变量)。