2012-02-15 57 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

相关问题