[英]Get Sum and Id of record through Linq-to-SQL and display on view
我需要先在MVC
代码中将此SQL
语句转换为linq
到sql
。
SELECT SUM(OrderUnits), ProductID
FROM OrderProducts AS op
jOIN Orders AS o ON o.ID = op.OrderID
WHERE o.OrderStatus = 1
GROUP BY op.ProductID;
我试图无济于事。 我的控制器调用MostSoldItems
有方法,我需要获取此结果并将其显示在我的视图中。
这是我尝试的:
var query =
(from p in dbcontext.OrderProducts
let totalQuantity =
(from op in dbcontext.Products
join o in dbcontext.Orders on p.OrderID equals o.ID
where o.OrderStatus == true
select p.OrderUnits).Sum()
orderby totalQuantity descending
select p);
我什么都没有。 而且我不知道如何在视图上显示它。
因此,我似乎想出了一个可能甚至可以解决的方法。 感谢@candide的回答,我开始研究了一段时间,并且已经弄清楚了! 下面的代码可以很好地解决我的问题。 也感谢@Moho的贡献。
var query = from p in dbcontext.OrderProducts
join pd in dbcontext.Orders on p.OrderID equals pd.ID
group p by p.ProductID into pdg
select new MostSoldModel
{
ID = pdg.Key,
Total = pdg.Sum(x => x.OrderUnits)
};
如果要查找通过相关Order.OrderStatus == true
过滤并按产品分组的OrderProduct.OrderUnits
的总和:
dbContext.OrderProducts
.Where( op => op.Order.OrderStatus )
.GroupBy( op => op.Product )
.Select( g => new
{
Product = g.Key,
TotalQuantity = g.Sum( op => op.OrderUnits ),
} );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.