【发布时间】:2020-12-07 21:29:07
【问题描述】:
我有一张已售产品表,我想绘制前 10 名销量最高的产品图表。
尝试使用以下代码,但我不知道确切的问题是什么,但逻辑上是正确的。
这是错误
System.ArgumentException: 'DbExpressionBinding 需要一个带有集合 ResultType 的输入表达式。参数名称:输入'
DateTime start = startDate.Value;
DateTime end = EndDate.Value;
var TopTen = (from q in db.soldProduct
where (q.addDate >= start && q.addDate <= end)
orderby q.Barcode.Count() descending
select new
{
count = q.Barcode.Count(),
q.productName
}).Take(10);
foreach (var item in TopTen)
{
chartCustomer.Series["Customer"].Points.AddXY(item.productName, item.count);
}
添加:- 我在每一行中都有项目名称和可能是一个或多个的数量,我也想将其添加到查询中,但它变得越来越难
销售单的型号产品包含以下内容
public string barcode {get;set;}
public int productId{get;set;}
public string productName{get;set;}
public int quantity{get;set;}
public DateTime addDate{get;set;}
public double amount{get;set}
如果有以下数据,那么表
| productId | barcode | productName | quantity | addDate | amount |
|---|---|---|---|---|---|
| 1 | 111 | milk | 3 | 3/2/2020 | 15 |
| 1 | 111 | milk | 1 | 3/2/2020 | 5 |
| 2 | 222 | bread | 5 | 3/2/2020 | 20 |
| 3 | 333 | cheese | 1 | 3/2/2020 | 100 |
| 1 | 111 | milk | 3 | 3/2/2020 | 15 |
| 2 | 222 | bread | 3 | 3/2/2020 | 15 |
销量最高的商品是面包,出现 8 次,它应该首先出现,然后是牛奶,出现 7 次,然后是奶酪。
【问题讨论】:
-
什么 LINQ:LINQ to SQL / EF 6.x / EF Core 2.0 / 2.1 / 3.x / 5.x?
Barcode是什么? -
linq to sql server ,产品条码为varchar
-
没有 linq to sql server - 你的意思是 linq to sql,还是使用实体框架?
-
没有 C# 类型
varchar- 如果Barcode是string那么您希望string上的Count()返回什么? -
我正在使用实体框架来 sql server 数据库