2017-04-21 1 views
0

여기에서 고민하는 linq. 각 직원의 총 매출액을 합산하려고합니다. 나는 SQL에서 그것을 가지고 있지만Linq 중첩 쿼리 sum

는 SQL

select 
    sum(t.total) as totalSales, 
    e.EmployeeID, 
    e.FirstName 
from(
    select 
     o.OrderID, 
     o.EmployeeID, 
     sum(d.unitprice)total 
    from Orders o 
     inner join [Order Details]d 
      on o.OrderID = d.OrderID   
    group by 
     o.OrderID, 
o.EmployeeID 
)t 
inner join Employees e 
    on e.EmployeeID = t.EmployeeID 
group by e.EmployeeID, e.FirstName 
order by totalSales 

Linq에 LINQ 심지어 가능했다 궁금 :이 여전히 직원

답변

0

위해 모든 총되지 매출을 기록했다

from a in orders 
join b in orderDetails on a.OrderID equals b.OrderID 
join c in employees on a.EmployeeID equals c.EmployeeID 
--I had a where a.EmployeeId == c.EmployeeId 
select b.UnitPrice).Sum() 

외부 선택에서 필요하지 않은 하위 선택에서 일부 필드를 꺼내 얻습니다.

from e in Employees 
join t in (
    from o in Orders 
    join d in Order_Details on o.OrderID equals d.OrderID 
    group d by new { o.OrderID, o.EmployeeID } into dg 
    let total = dg.Sum(x => x.unitprice) 
    select new { dg.Key.EmployeeID, total }) 
    on e.EmployeeID equals t.EmployeeID 
group t.total by new { e.EmployeeID, e.FirstName } into tg 
let totalSales = tg.Sum() 
orderby totalSales 
select new { tg.Key.EmployeeID, tg.Key.FirstName, totalSales };