나는 모든 판매 비용을 얻기 위해 쿼리를 작성하고 예상 운송 비용과 비교해야합니다. 나는이 쿼리를 얻을 수 없다,C# Linq GroupBy, 각 그룹의 열 목록을 얻으십시오.
var sales = (from sale in db.Sales
where sale.DateOfSale > startDate && sale.DateOfSale < endDate
group sale by new {sale.ItemID, sale.EstimatedShipping} into g
select new
{
ItemID = g.Key.ItemID
Estimate = g.Key.EstimatedShipping
ActualShipCosts = (from gSales in g select gSales.ActualShipping)
}).ToList();
키에 의해 그룹을 얻거나 g.Count()를 수행하지 않은 그룹과 아무것도하는 쿼리가 끔찍하게 느린 실행하게 보인다 : 여기 내 쿼리입니다 시간 초과없이 끝내기. 여기서 성과를 도울 수있는 방법이 있습니까? 대신이 시도
(from gSales in g select gSales.ActualShipping)
:
var sales = (from sale in db.Sales
where sale.DateOfSale > startDate && sale.DateOfSale < endDate
group sale by new {sale.ItemID, sale.EstimatedShipping} into g
select new
{
ItemID = g.Key.ItemID,
Estimate = g.Key.EstimatedShipping,
ActualShipCosts = g.Select(gSales => gSales.ActualShipping).ToList()
}).ToList();
이 두 번째 from
을 방지 문제를
결과 세트로 무엇을하고 있습니까? 아마도 당신의 목표를 성취 할 수있는 더 좋은 방법이있을 것입니다. –
그룹화하기 전에 쿼리에서 반환하는 예상 레코드 수는 얼마나됩니까? ActualShipCosts가 목록으로 필요합니까? – Krzysztof
그룹화하기 전에 날짜에 따라 약 50,000 개의 결과가 나타납니다. 그룹을 건너 뛰고 나중에 필터링 할 수 있지만 (~ 10 초 소요) 빠른 옵션을 찾으려했습니다. ActualShipCosts를 목록으로 만들고 싶지만 ActualShipCosts 쿼리에 .ToList()를 추가하면 잘못된 쿼리로 보였다. – IrkenInvader