在Linq to SQL中对多个表使用聚合
我已经寻找答案好几天了,每次我觉得我很接近,我都会遇到一些障碍 我有两个表,一个是在Linq to SQL中对多个表使用聚合,sql,linq,join,aggregate,Sql,Linq,Join,Aggregate,我已经寻找答案好几天了,每次我觉得我很接近,我都会遇到一些障碍 我有两个表,一个是玩家(playerID,Name),另一个是活动(actionID,playerID,Quarter,Score)。我想加入这些表并汇总它们,计算每个球员在每个季度的得分。在输出中,我希望看到来自player表(Name)和activities表(Quarter)的内容,当然还有聚合总和(score) 在SQL中,它可以是以下内容: SELECT p.Name, a.Quarter, 'TotalScore' =
玩家
(playerID,Name),另一个是活动
(actionID,playerID,Quarter,Score)。我想加入这些表并汇总它们,计算每个球员在每个季度的得分。在输出中,我希望看到来自player表(Name)和activities表(Quarter)的内容,当然还有聚合总和(score)
在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
我发现了几个例子,使用Join或Group Join,但除了聚合之外,我似乎无法从子表中获取数据
有什么想法吗
谢谢您不需要使用Join
(请参阅),但您需要使用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)
};
您不需要使用Join
(请参阅),但需要使用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)
};