0

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

如何显示带有产品名称的行以及它的报价计数?

4

1 回答 1

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

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

于 2013-04-16T05:59:14.393 回答