无法得到产品的数量计数
本文关键字: | 更新日期: 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
同样的产品有两种不同的价格