Получите Sum и Id записи через Linq-to-SQL и отобразите в представлении - PullRequest
0 голосов
/ 23 сентября 2018

Мне нужно преобразовать этот оператор 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);

Я ничего не получаю.и я не знаю, как бы я показывал это в представлении.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Таким образом, я, кажется, обдумала, возможно, даже прямой ответ.Спасибо за ответ @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)
                    };
0 голосов
/ 24 сентября 2018

Если вы ищете общую сумму OrderProduct.OrderUnits, отфильтрованную по связанному Order.OrderStatus == true и сгруппированную по продукту:

dbContext.OrderProducts
    .Where( op => op.Order.OrderStatus )
    .GroupBy( op => op.Product )
    .Select( g => new
    {
        Product = g.Key,
        TotalQuantity = g.Sum( op => op.OrderUnits ),
    } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...