2016-11-22 60 views
0

我想在Visual Studio中使用Linq到XML - C#將XML文件中的所有元素拉到一起,並按它們的值進行分組。當使用Linq到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

topTermIGrouping,特別是IGrouping<string, XElement>。因此,它具有包含由您分組的值的屬性Key

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

(我假設的完整代碼做的比在一個循環覆蓋變量更多)。

+0

是的,這工作完美。謝謝!是的,我將添加代碼以將這些值添加到循環內的字符串中。 –