LINQ - группировка и суммирование по объединенным таблицам - PullRequest
1 голос
/ 24 февраля 2020

Я пытаюсь реплицировать запрос SQL, используя 2 объединения, а затем группировать и суммировать.

Для этого примера я использовал базу данных Nortwind, которую я пытаюсь показать для каждого продукт, который клиенты приобрели и сколько они приобрели.

SQL выглядит следующим образом

select p.productid,p.ProductName, c.companyname, 
        c.CustomerID,
        sum(od.quantity) as qty_ord
from products as p
inner join [Order Details] as od on od.ProductID=p.ProductID
inner join orders as o on od.OrderID=o.OrderID
inner join customers as c on o.CustomerID=c.CustomerID
where p.productid=1     --  Not in query just for debugging/checking linq
group by p.ProductID,p.ProductName,c.customerid, c.companyname

, и я использовал следующее c#

var productsalesbycust =
                (
                from p in context.Products join
                od in context.Order_Details on p.ProductID equals od.ProductID join
                o in context.Orders on od.OrderID equals o.OrderID join
                c in context.Customers on o.CustomerID equals c.CustomerID
                where p.ProductID==1        //  To be removed
                group new {p,c,od} by new
                {
                    p.ProductName,
                    c.CompanyName,
                    c.CustomerID,
                    od.Quantity
                } into g
                select new
                {
                    g.Key.ProductName,
                    g.Key.CustomerID,
                    g.Key.CompanyName, 
                    t= g.Sum(x=>x.od.Quantity)
                }
                );

Это не дает мне того, что я хочу, цифры верны, но группировка не работает.

enter image description here

...