2012-08-26 34 views
2

我一直在尋找一個現在的日子的答案,每當我覺得我很接近我遇到了一些障礙。我有兩個表格,一個players(playerID,Name),另一個activities(actionID,playerID,Quarter,Score)。我想要join這些表格並彙總它們,計算每個季度每個玩家的得分。在輸出結果中,我希望看到玩家表格(名稱)以及活動表格(季度)的內容,當然還有聚合總和(分數)。在LINQ to SQL中的多個表上使用聚合

在SQL

,它會沿着這些路線的東西:

SELECT p.Name, a.Quarter, 'TotalScore' = sum(a.Score) 
FROM players p 
JOIN activities a on p.playerID = a.playerID 
GROUP BY p.Name, a.Quarter 

我已經找到了幾個例子,使用或者加入或集團加入,但我似乎無法從子表中的數據,除了爲總和。

有什麼想法?

感謝

回答

0

你不應該需要使用Join(見Why use LINQ Join on a simple one-many relationship?),但你需要使用GroupBy

var players = context.Players; 
var activities = players.SelectMany(p => p.Activities); 
var groups = activities.GroupBy(a => new 
{ 
    Name = a.Player.Name, 
    Quarter = a.Quarter 
}); 

var result = groups.Select(g => new 
{ 
    Name = g.Key.Name, 
    Quarter = g.key.Quarter, 
    Score = g.Sum(a => a.Score) 
};