如何在linq查询中使用group by?

时间:2012-06-17 08:13:19

标签: c# linq linq-group

我有一个产品清单,包括productname,productprice&类别。我想写一个linq查询来根据类别对所有产品进行分组。我尝试过以下方法:

var p = from s in productlist
        group s by s.Category into g
        select new { Category = g.Key, Products = g};

通过此查询,它显示一个表格,其中有两列作为类别&产品。 “类别”列按预期有两个类别,但在“产品”列下,没有数据。我希望将所有产品列表按类别分开。

1 个答案:

答案 0 :(得分:2)

  

OK ..需要更多帮助,现在当我运行代码时,它只是   显示一个表,其中类别列显示两个类别   预期,但产品列未显示任何数据。

您需要从组中选择产品:

Products = g.Select(p => p).ToList()

看看以下一些其他属性。

var categories = from s in productlist
                group s by s.category into g
                select new { 
                    Category = g.Key, 
                    Products = g.ToList(),
                    ProductCount = g.Count(),
                    AveragePrice = g.Average(p => p.productprice)
                };