2013-10-15 26 views
0
var abc1 = from dlist in db.DebtorTransactions.ToList() 
         join war in db.Warranties on dlist.ProductID equals war.Id 
         join ag in db.Agents on war.fldAgentID equals ag.pkfAgentID 
         join sr in db.SalesReps on war.fldSrId equals sr.pkfSrID 
         where dlist.TransTypeID == 1 
         select new 
         { 
          dlist.Amount, 
          dlist.TransTypeID, 
          name = ag.Name, 
          ag.pkfAgentID, 
          sr.pkfSrID, 
          salesnam = sr.Name 
         } into objabc 
         group objabc by new 
         { 
          objabc.TransTypeID, 
          objabc.name, 
          objabc.salesnam, 
          objabc.Amount 
         }; 
      var amt1 = abc1.Sum(x => x.Key.Amount); 


      var abc2 = from dlist in db.DebtorTransactions.ToList() 
         join cjt in db.CarJackaTrackas on dlist.ProductID equals cjt.pkfCjtID 
         join ag in db.Agents on cjt.AgentID equals ag.pkfAgentID 
         join sr in db.SalesReps on cjt.SalesRepId equals sr.pkfSrID 
         where dlist.TransTypeID == 0 
         select new 
         { 
          dlist.Amount, 
          dlist.TransTypeID, 
          name = ag.Name, 
          ag.pkfAgentID, 
          sr.pkfSrID, 
        enter code here`  salesnam = sr.Name 
         } into objabc 
         group objabc by new 
         { 
          objabc.TransTypeID, 
          objabc.name, 
          objabc.salesnam, 
          objabc.Amount 
         }; 
      var amt2 = abc1.Sum(x => x.Key.Amount); 
      //var result1= 
      return View(); 

我是新來的linq,這個查詢正在工作,但我需要得到的金額其中dlist.TransTypeID == 0和其中dlist.TransTypeID == 1只是單個查詢的總和。有人可以幫助我嗎?在此先感謝如何在linq中使用多重連接?

+0

有點不清楚你在問什麼。你是否試圖獲得'dlist.Amount'的總和作爲dlist.TransTypeID == 0或== 1的記錄。或者你想要兩個數量的結果,一個是'TransTypeID == 0',另一個是'TransTypeId == 1'? – Ocelot20

+0

是@ Ocelot20我想要兩個結果TransTypeID == 0 TransTypeId == 1只有一個查詢。可能嗎? – user2456467

回答

0

下面是如何做到這一點的修剪下來的例子。如果需要,可以添加連接,但我不清楚爲什麼需要某些額外的連接值。

var transTypeAmountSums = (from dlist in db.DebtorTransactions 
          group dlist by dlist.TransTypeId into g 
          where g.Key == 0 || g.Key == 1 
          select new 
          { 
           TransTypeId = g.Key, 
           AmountSum = g.Sum(d => d.Amount) 
          }).ToDictionary(k => k.TransTypeId, v => v.AmountSum); 

int transTypeZeroSum = transTypeAmountSums[0]; 
int transTypeOneSum = transTypeAmountSums[1]; 

幾件事情需要注意:

  1. 我刪除ToList()。除非你想把所有的DebtorTransactions放到內存中,然後對這些結果運行一個Linq操作,否則你會想把它留在外面讓SQL處理聚合(它比C#好得多)。
  2. 我只分組dlist.TransTypeId。如果你需要的話,你仍然可以通過更多的字段進行分組,但是在示例中爲什麼需要它們還不清楚,所以我只是做了一個簡單的例子。
+0

謝謝Ocelot20 :) – user2456467