나는 투영과 그룹화에 관해서는 여전히 꽤 녹색이다. linq을 사용하여 다음 SQL 쿼리의 결과를 얻으려면 어떻게해야합니까? 아니면 linq 게다가이 쿼리를 검색하는 더 나은 접근법은 무엇입니까? 엔티티 프레임 워크를 사용하고 있고 난 그냥 SQL 하드 코드 할 수 있지만 더 나은 방법이 있으면 그렇게하지 않는 것이 좋습니다. 투영 된 linq 쿼리의 하위 테이블에서 열을 어떻게 합계합니까?
SELECT j.JobId, j.Name, j.OrderId, j.ShipDate,
st.ShipTypeId, sum(p.DeliveryCnt * p.Quantity) AS 'DeliveryCnt'
FROM Jobs j
JOIN ShipTo st ON j.JobId = st.JobId
JOIN DesignSets ds ON j.JobId = ds.JobId
JOIN DesignSetAreas dsa ON ds.DesignSetId = dsa.DesignSetId
JOIN Products p ON dsa.DesignSetAreaId = p.DesignSetAreaId
WHERE j.ShipDate >= '11/13/2016' AND j.ShipDate <= '11/26/2016'
GROUP BY j.JobId, j.Name, j.OrderId, j.ShipDate, st.ShipTypeId
아래 코드
내가 지금까지 가지고있는,하지만 난 곳 또는 내가 그룹을 얼마나 확실하지 않다, 또는이도 가능합니다.var shipList = from j in db.Jobs
join st in db.ShipTo on j.JobId equals st.JobId
join ds in db.DesignSets on j.JobId equals ds.JobId
join p in db.Products on ds.DesignSetId equals p.DesignSetId
where j.ShipDate >= startDate && j.ShipDate <= endDate
select new ShipScheduleViewModel
{
JobId = j.JobId,
Name = j.OrderId + " " + j.Name,
ShipDay = ((DateTime)j.ShipDate).Day,
ShipVia = st.ShipTypeId,
Count = p.DeliveryCnt * p.Quantity
};
먼저 나는 https://coding.abel.nu/2012/06/dont-use-linqs-join-navigate/을 조인을 통해 당신은 당신이 탐색에 대한 맞아 – juharr
탐색 속성의 사용을 포용하는 것이 좋습니다 속성. 코드를 작성하는 데 훨씬 깨끗한 방법입니다. 더 좋은 방법이 있다는 것을 상기시키는 링크에 감사드립니다. – Kyle