2013-04-16 54 views
0

我对如何在Linq中使用GroupBy有点困惑。我需要显示产品的名称和计数它的报价,我想出了这个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

btw [here](http://www.dotnet-tricks.com/Tutorial/linq/UXPF181012-SQL-Joins-with-C)是Linq查询中不错的文章,用linq和sql中的例子和结果显示每个连接类型 –

回答

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条款中的报价。

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