c# - 通过 Linq-to-SQL 获取记录的 Sum 和 Id 并显示在视图中
问题描述
我需要先将此SQL
语句转换linq
为代码sql
。MVC
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)
};