在我的锦标赛申请表中,我试图为每位参赛者计算奖牌数。
我有一个包含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。