计算连接多个表的多个列

时间:2012-07-18 06:23:37

标签: winforms c#-4.0 entity-framework-4

在我的锦标赛申请表中,我试图为每位参赛者计算奖牌数。

我有一个包含GoldID,SilverID和BronzeID的结果表。我这样做是因为ID可能是个人或团队(DivisionGroup =“Team”或其他)。结果也可以是A型或B型(DivisionType =“A”或“B”)。

public int GoldID { get; set; }
public int SilverID { get; set; }
public int BronzeID { get; set; }
public string DivisionGroup { get; set; }
public string DivisionType { get; set; }

我很确定以下内容会让我获得个人的结果,但如果有办法,我宁愿在一个查询中执行此操作。

var GoldIndividual = from r in context.Result
    where r.DivisionGroup != "Team" &&
    r.TournamentsID == TournamentID &&
    r.GoldID == ParticipantsID
    select r;
var SilverIndividual = from r in context.Result
    where r.DivisionGroup != "Team" &&
    r.TournamentsID == TournamentID &&
    r.SilverID == ParticipantsID
    select r;
var BronzeIndividual = from r in context.DivisionGradeResult
    where r.DivisionGroup != "Team" &&
    r.TournamentsID == TournamentID &&
    r.BronzeID == .ParticipantsID
    select r;

球队的事情让我完全搞砸了。 GoldID,SilverID和BronzeID是Teams表的ID。团队表有一组参与者。加入参与者表无需加入,因为team.participants是一个集合。

以下SQL工作(这是在SQL Compact 4.0中),但我不知道如何将其转换为LINQ,因为实体对象中不存在“TeamsA_TeamsAID”。参与者但是作为一个集合,我不能去“Participants.ParticipantsID”

SELECT COUNT(GoldID)
FROM Results
INNER JOIN TeamsA ON Results.GoldID = TeamsAID
INNER JOIN Participants ON TeamsA_TeamsAID = TeamsAID
WHERE ParticipantsID = 1
AND DivisionGroup = 'Team'
AND DivisionType = 'A'

这个还需要为金,银和铜做。同样,在一个查询中会很好。特别是考虑到我必须在DivisionType“B”上再次对抗TeamsB。

0 个答案:

没有答案