Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linq to SQL中对多个表使用聚合_Sql_Linq_Join_Aggregate - Fatal编程技术网

在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)
};