2012-02-15 46 views
0

下面是我的XML文件的結構:使用LINQ to XML如何根據它的值對元素進行分組?

我使用一些API從一個供應商一個數據庫中獲取此XML文件。我在我的新數據庫「目錄」,「集合」和「工件」中有三個表。 我想根據像'TEXTILES','CERAMICS'等它的值和一個計數器變量來計算我擁有的集合的數量。然後,我可以在我的Collection表中動態創建collectionID & collectionTitle。

我無法解決它。到現在我只是做了這段代碼:

var getcontent = from record in xmldoc.Descendants("record") 
       //this group by doesn't work 
       group record by record.Element("collection") 
       select record.Element("collection").Value;      

foreach (var node in getcontent) 
{ 
    Response.Write("Collection: " + node + "<br/>"); 
} 

回答

3

嘗試大意如下:

var groups = from record in xmldoc.Descendants("record") 
      group record by (string)record.Element("collection") into g 
      select new { 
       key = g.Key, 
       count = g.Count() 
      } 

foreach (var group in groups) 
{ 
    Response.Write("Collection " + group.key + " has " + group.count + " member(s)."); 
} 
+0

嘿馬丁,你的代碼對我的作品!非常感謝。我剛開始使用LINQ。所以基本上你所做的是你選擇了collection元素並把它放在g類變量中然後在g上進行操作。 此外,我有很多XML文件中的元素,我必須獲取它們的值並將其存儲在數據庫中。那麼,您能否告訴我一個代碼的例子,以便在一個代碼中追加選擇a,b,c,d還是我需要編寫from,爲每個元素選擇?希望我的觀點對你很清楚! 再次感謝 – 2012-02-15 13:18:15

+0

我不明白你的第二個問題與第一個問題有什麼關係,所以你應該發佈一個新問題而不是在評論中提問。如果你不熟悉LINQ和LINQ to XML,你應該或者至少可以從MSDN上的介紹開始,例如http://msdn.microsoft.com/en-us/library/bb397933.aspx和http://msdn.microsoft .COM/EN-US /庫/ bb387098.aspx。一般來說,如果你想選擇值,你可以在doc.Descendants(「foo」)中使用'from foo'來選擇新的{bar =(string)foo.Element(「bar」),baz =(int)foo.Element 「baz」),(DateTime)foo.Element(「whatever」)}'。 – 2012-02-15 15:59:25

+0

好的。感謝Martin的資源。我現在正在閱讀。 乾杯! – 2012-02-16 12:58:04

相關問題