LINQ GroupBy获取名称和计数

LINQ GroupBy获取名称和计数,linq,entity-framework,linq-to-sql,linq-to-entities,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, Off

我对如何在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()

如何显示带有产品名称的行以及其优惠数量?

听起来您希望加入一个群组:

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
    (产品)
  • 优惠
    (该产品的优惠)
因此,我将订购更改为
p.Prod\u ID
——然后在
select
子句中计算报价

请注意,通过这种方式,对于没有报价的产品,您仍然会得到一个结果,而如果您进行的是直接的内部联接,则这些结果将完全丢失。

btw是一篇关于Linq查询的优秀文章,其中包含Linq和sql中的示例以及显示每种联接类型的结果