首页 > 解决方案 > 通过 Linq-to-SQL 获取记录的 Sum 和 Id 并显示在视图中

问题描述

我需要先将此SQL语句转换linq为代码sqlMVC

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);

我什么也得不到。而且我不知道如何在视图上显示它。

标签: c#asp.net-mvc

解决方案


所以我似乎想出了一个解决办法,甚至可能是一个直截了当的答案。感谢@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)
                    };

推荐阅读