2010-02-22 220 views
4

我有兩個LINQ語句,我想將它們合併爲一個,但對於我的生活,我無法實現它。我不能讓分組在第一個語句中工作。 它抱怨TotalBuyTotalSell屬性不存在,雖然不抱怨AmountTCAmountAUDLINQ JOIN + GROUP BY + SUM

這應該很簡單。有什麼想法嗎?

var itineraryItems = 
    from ii in this.ItineraryItemRecords 
    join t in this.TransactionRecords on ii.OperatorID equals t. 
    TransactionActor.OperatorID into g select new { 
    OperatorID = ii.OperatorID, TotalBuy = g.Sum(i = >ii.TotalBuy) 
     , TotalSell = g.Sum(i = >ii.TotalSell) 
     , PaidTC = (0 - (g.Sum(t = >t.AmountTC))) 
     , PaidAUD = (0 - (g.Sum(t = >t.AmountAUD))) 
}; 

var itineraryItemz = 
    from i in itineraryItems group i by i.OperatorID into g select new { 
    OperatorID = g.Key, TotalBuy = g.Sum(i = >i.TotalBuy) 
     , TotalSell = g.Sum(i = >i.TotalSell) 
     , PaidTC = (0 - (g.Sum(i = >i.PaidTC))) 
     , PaidAUD = (0 - (g.Sum(i = >i.PaidAUD))) 
}; 

作爲邊注,ItineraryItemRecordsTransactionRecords是由SubSonic處理類類別。

這真的應該很簡單,所以任何幫助,將不勝感激。

問候, 約翰

+0

@JohnBob - 我用c#標籤重新標記了您的問題,以便它可能會得到更多的注意,因爲沒有人回覆。 – dugas 2010-02-22 14:44:01

回答

10

,稍有差錯,更正爲:

var itineraryItems = from ii in this.ItineraryItemRecords 
    join t in this.TransactionRecords on ii.OperatorID equals t.TransactionActor.OperatorID 
    into g 
    select new 
    { 
     OperatorID = ii.OperatorID 
     //, TotalBuy = g.Sum(i => ii.TotalBuy) 
     , TotalBuy = g.Sum(i => i.TotalBuy) 
     //, TotalSell = g.Sum(i => ii.TotalSell) 
     , TotalSell = g.Sum(i => i.TotalSell) 
     , PaidTC = (0 - (g.Sum(t => t.AmountTC))) 
     , PaidAUD = (0 - (g.Sum(t => t.AmountAUD))) 
    }; 

我建議不要使用重新標識 - 將有助於避免在未來這些錯誤。

+0

嘿, 我很欣賞這裏的幫助,感謝您的評論。 不幸的是,我已經拋出了這個代碼,它不工作。 它抱怨TotalBuy和TotalSell。 「無法解析符號TotalBuy」 'ResSystem.Library.Objects.Transaction'沒有包含'TotalBuy'的定義,也沒有接受'ResSystem.Library.Objects.Transaction'類型的第一個參數的擴展方法'TotalBuy'可能是發現 這裏的語法有什麼問題? – JohnBob 2010-02-22 22:59:47

+0

沒關係。 我最終分裂成三個單獨的查詢。 兩個組通過查詢,然後通過查詢加入這兩個組。 – JohnBob 2010-02-23 00:42:17

+0

感謝您的幫助! – JohnBob 2011-06-07 08:50:46