我需要編寫一個查詢來獲取銷售的所有運輸成本,並將其與預計運輸成本進行比較。這裏是我的查詢: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()之類的話,使查詢運行非常緩慢,我不能讓這個查詢完成沒有超時。我能做些什麼來幫助表演?
你對結果集做了什麼?也許有更好的方法來實現你的目標。 –
分組之前查詢返回的記錄數量是多少?你需要列出ActualShipCosts嗎? – Krzysztof
分組之前,我根據日期獲得50k左右的結果。我可以跳過小組並稍後過濾(需要約10秒),但我希望找出更快的選擇。我希望將ActualShipCosts作爲列表,但向ActualShipCosts查詢添加.ToList()似乎使其成爲無效查詢。 – IrkenInvader