使用LINQ从XML获得最大的重复次数

时间:2010-01-17 07:24:42

标签: xml linq max

我有一个包含产品基本信息的xml文件,结构如下:

 - products
   - Id 
   - Price
   - ManufacturerId

另一个,包含有关制造商的数据:

 - manufacturers
   - Id
   - Name

我想使用LINQ从products.xml文件中获得产品数量最多的前三大制造商(制造商名称和产品数量)。

编辑: products.xml文件如下所示:

<products>
  <row Id="1" Price="1.00" ManufacturerId="3"/>
  <row Id="1" Price="0.99" ManufacturerId="2"/>
</products>

这些字段是产品和制造商文件的属性。

1 个答案:

答案 0 :(得分:2)

嗯,你可以找出哪些制造商是最好的,而不看他们是谁。然后,您可以在第二个查询中获取详细信息。

如果您要显示一些示例XML会有所帮助 - 例如,我们不知道制造商ID是在属性还是元素中。但它会是这样的:

var top3Ids = products.Elements("row")
                      .GroupBy(x => (string) x.Attribute("ManufacturerId"))
                      .Select(group => new { Id = group.Key,
                                             Count = group.Count() })
                      .OrderByDescending(x => x.Count)
                      .Select(x => x.Id)
                      .Take(3)
                      .ToList();

var top3 = from element in manufacturers.Elements("row")
           where top3Ids.Contains((string) element.Attribute("Id"))
           select (string) element.Attribute("Name");