【问题标题】:Returning Value of Grouped Items when using Linq to XML使用 Linq to XML 时返回分组项的值
【发布时间】:2016-11-23 16:19:56
【问题描述】:

我正在尝试在 Visual Studio - C# 中使用 Linq to XML 来提取 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 不起作用。当我循环通过时,它将计算每个值的出现次数,但我无法获得正在计算的字符串值。有什么想法吗?

【问题讨论】:

    标签: c# linq-to-xml


    【解决方案1】:

    topTerm 是一个IGrouping,尤其是IGrouping&lt;string, XElement&gt;。所以它有一个属性Key,其中包含您分组的值:

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

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

    【讨论】:

    • 是的,效果很好。谢谢!是的,我将添加代码以将这些值添加到循环内的字符串中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多