2011-06-22 22 views
0

私は3つのテーブルを結合し、グループ化を実行するlinq to sqlクエリを1つ持っています。私はLinqPadでこのクエリによってSQL生成(実行)を検査する場合、ここで、6つのSQLステートメントは、クエリ巨大なSQLは、Linqから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) 

あるれます。最初のものは結合を実行し、グループ化と残りのクエリは同一のクエリを異なるパラメータで何度も繰り返し呼び出すだけです。明らかに、パラメータはグループのキーに含まれる値です。 130グループのレコードでは、linqがデータベースに131回ぶつかると私は信じています。どのようにしてデータベースに多くのヒットを保存できますか?私は結合されたクエリでToListを呼び出した後、つまりデータをメモリにロードした後にグループ化を実行する必要がありますか?
よろしく

答えて

1

(私はmktActualSalesを想定していますが、あなたのテーブルであり、あなたが質問でのDataContextを入れ逃した。)

それはあなたのテーブルであれば、あなたのDataContextの上LoadOptionsを見ている必要があります。これにより、関連するデータの一部を読み込むことができ、繰り返しクエリが実行されない可能性があります。

http://msdn.microsoft.com/en-us/library/system.data.linq.dataloadoptions.aspx

それはテーブルではない場合、あなたはmktActualSalesを読み込む方法についての表情を持っていますが、私はそれが表であると仮定し、あなたの質問から判断します。

関連する問題