繁体   English   中英

通过Linq-to-SQL获取记录的总和和ID,并在视图上显示

[英]Get Sum and Id of record through Linq-to-SQL and display on view

我需要先在MVC代码中将此SQL语句转换为linqsql

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM