LINQ Group获得Name和A Count

时间:2013-04-16 05:54:14

标签: linq entity-framework linq-to-sql linq-to-entities

我对如何在Linq中使用GroupBy感到有些困惑。我需要显示产品的名称并计算它的优惠,我已经想出了这个

var context = new Model.Entities();
var query = from p in Product
            join o in Offers on p.Prod_ID equals o.Prod_ID
            orderby o.Prod_ID
            select new { Name = p.Name, Offers = o.Prod_ID.Count()};
var products = query.ToList();

现在我不能简单地拥有

Offers = o.Prod_ID.Count()

如何显示包含产品名称的行以及其提供的计数?

1 个答案:

答案 0 :(得分:1)

听起来你想要一个团体加入:

var query = from p in Product
            join o in Offers on p.Prod_ID equals o.Prod_ID into offers
            orderby p.Prod_ID
            select new { Name = p.Name, Offers = offers.Count() };

现在在join子句之后,你在范围内有两个范围变量:

  • p(产品)
  • offers(该产品的优惠)

所以我已将订单更改为p.Prod_ID - 然后只计算select子句中的商品。

请注意,通过这种方式,您仍然可以获得没有优惠的产品的结果,而如果您正在进行直接内部联接,则会完全丢失。