无法得到产品的数量计数

本文关键字: | 更新日期: 2023-09-27 18:07:43

我有一个包含列的产品表

 product_id (p.k)
 product_name
 product_description
 product_price
 category_id

,我已经为product_id设置了这样的属性…(主键,非空,A.I)

我试图将数据网格视图中相同产品的数量表示为像这样的列

product_name     product_description         stock available        product price
    a                good product                2  (a+a)                  300
    b                bad product                 3   (b+b+b)                  400

通过以下方法....

var stockavailable = dbcontext.products
   .GroupBy(x => x.product_Id)
   .Select(a => new
                {
                    productid = a.Key,
                    productnam = a.FirstOrDefault().product_Name,
                    productdescr = a.FirstOrDefault().product_Description,
                    stockavailable = a.LongCount(),
                    productprice = a.FirstOrDefault().product_Price
                });
bindingsource.DataSource = stockavailable;
datagridview1.DataSource = bindingsource; 

但它不显示产品的数量,即使有两个相同的产品。对于不同的product_id,有人能帮我吗?

编辑:


我可以这样做吗.....

  stockavailable = a.select(x=>x.product_id).Distinct().Count() 
    Instead of this stockavailable = a.LongCount(),

无法得到产品的数量计数

您缺少的是对具有相同product_id的行数进行计数

在SQL中,你可以使用集合函数,如sum, count, max, min等,在你的情况下,你做了一个组by,但忘记插入一个计数。

查看这里关于如何在LINQ中使用计数的语法非常相似的问题:

LINQ to SQL using GROUP BY and COUNT(DISTINCT)

如果product_id是主键,那么它不是每个条目都不同吗?第二行是相同的product_id,对吧?如果这是真的,那么GroupBy(x => x.product_id)将不会进行任何真正的分组。每一行都是它自己的组。

我觉得你想要的东西更接近:

var stockavailable = dbcontext.products
   .GroupBy(x => new {x.product_Name, x.product_Description, x.product_Price })
   .Select(a => new
                {
                    productnam = a.Key.product_Name,
                    productdescr = a.Key.product_Description,
                    stockavailable = a.LongCount(),
                    productprice = a.Key().product_Price
                });

另外,添加product_Quantity列不是更容易吗?你的桌子现在是这样布置的,你能不能:

id  |  name  |  desc  |  price
1      a        good     350
2      a        good     300
3      b        bad      400

同样的产品有两种不同的价格

相关文章:
  • 没有找到相关文章