linq - linq 组查询中的产品销售数量和名称
问题描述
我有一个产品销售数据,想显示按产品 ID 分组的销售摘要。汇总结果应显示产品名称和总销售额。如何选择一个字段以及 groupby 结果,并且该字段不是关键字段。
public partial class SaleOrderDetail
{
public int Id { get; set; }
public int ProductId { get; set; }
public string ProductName { get; set; }
public int Quantity { get; set; }
public decimal Price { get; set; }
public decimal LineTotal { get; set; }
}
var query = from saleorder in _dbContext.SaleOrderDetail
group saleorder by saleorder.ProductId into salesummary
select new
{
productid = salesummary.Key,
prdouctname = salesummary.First().ProductName,
totalqty = salesummary.Sum(s => s.Quantity)
};
由于产品名称的 First(),我得到了错误 invalidoperationException。
解决方案
将 SaleOrderDetail 设置为 AsEnumerable() 就可以了。对于 SQL 表达式,如果将其设为 AsEnumerable() 或 .ToList<> 等,它将起作用。
var query = from saleorder in _dbContext.SaleOrderDetail.AsEnumerable()
group saleorder by saleorder.ProductId into salesummary
select new
{
productid = salesummary.Key,
prdouctname = salesummary.First().ProductName,
totalqty = salesummary.Sum(s => s.Quantity)
};
推荐阅读
- cocoa - NSScrollView 截断文本并且没有滚动条
- r - 通过 Rcurl 上传文件
- javascript - 将列(包括 thead 和 td)移动到新位置
- django-filter - 多对多关系存在的过滤器集
- tsql - 如何拆分 T-SQL 命令
- llvm-clang - Linux 的 BPF 程序中是否允许循环?
- python-3.x - 我正在尝试使用过滤器在列表中查找素数,但由于结果是奇数而找不到错误
- ruby-on-rails - Rails:如何通过模型中的 id 通过关系创建 has_many?
- excel - Excel 2007 - 重新排列水平行中的垂直数据
- c# - 在循环内添加 SQL 参数,在循环外执行。(C# SQL 客户端中带参数的单查询多插入)