0
我有一個LINQ到SQL查詢,只需連接三個表然後執行分組。這裏是查詢爲Linq-to-Sql分組生成大量的Sql
(from s in mktActualSales
join p in sysPeriods on s.PeriodID equals p.PeriodID
join d in setupDesignations on s.PositionID equals d.DesignationID
group new { s, p } by new{d.Title,d.DesignationID} into temping
select
new
{
SPOPosition = temping.Key.Title,
SalesPeriods = temping.Select(x=>new {PeriodID = x.p.PeriodID, StartDate = x.p.StartDate, EndDate = x.p.EndDate, SaleTargetID = x.s.ActualSaleID, IsApproved = x.s.IsApproved}),
PositionID = temping.Key.DesignationID
}).Take(5)
當我檢查sql生成(執行)通過此查詢在LinqPad,有6個sql語句;第一個執行連接和分組,其餘的查詢都是相同的,只需用不同的參數反覆調用相同的查詢即可。顯然,參數是組中包含的值。這讓我相信,對於有130組的記錄,linq會將數據庫打到131次。我如何將這麼多點擊保存到數據庫?我應該在將數據加載到內存後執行分組,即在對聯接的查詢調用ToList之後?
問候