我对如何在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()
如何显示包含产品名称的行以及其提供的计数?
答案 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
子句中的商品。
请注意,通过这种方式,您仍然可以获得没有优惠的产品的结果,而如果您正在进行直接内部联接,则会完全丢失。