2

私は何日も答えを探していましたが、近くにいると思うたびに、いくつかの障害に遭遇します.

2 つのテーブルがあり、1 つはplayers(playerID, Name) で、もう 1 つはactivities(actionID, playerID, Quarter, Score) です。joinこれらのテーブルを集計して、各四半期の各プレーヤーのスコアを数えたいと思います。出力では、プレイヤー テーブル (Name) とアクティビティ テーブル (Quarter)、そしてもちろん集計 Sum(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

結合またはグループ結合を使用していくつかの例を見つけましたが、集計を除いて子テーブルからデータを取得できないようです。

何かご意見は?

ありがとう

4

1 に答える 1

0

を使用する必要はありませんが(単純な 1 対多の関係で LINQ 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)
};
于 2012-08-26T11:06:33.543 に答える