2010-11-02 39 views
0

我刚开始与LINQ交手中,我有以下情形:LINQ查询与组的加入 - 需要额外的数据组

我有一个数据库,其代表着不同日期球队之间的体育比赛,举办如下:

Table MATCH 
___________ 
MatchID 
MatchLocation 
MatchDate 


Table MATCHTEAM 
________________ 
MatchID 
TeamID 
HomeOrAway 
Points 

Table TEAM 
__________ 
TeamId 
TeamName 

现在我希望能够查询数据库来看待所有匹配特定的团队发挥,并为每场比赛相关球队的数据。到目前为止,我已经能够执行一个查询,确实组加入如下:

Using MyMatchEntites As New MatchEntities 
     Return (From M In MyMatchEntites.Match, _ 
       MT In MyMatchEntites.MatchTeam _ 
       Where M.MatchId = MT.Match.MatchId And _ 
       MT.Team.TeamId = inputTeamId _ 
       Select M _ 
       Group Join MT2 In MyMatchEntites.MatchTeam _ 
       On MT2.Match.MatchId Equals M.MatchId _ 
       Into _ 
       MatchTeams = Group).ToList 
    End Using 

这使我由输入队出场在比赛的名单和每个记录的球队的关联列表在比赛中打球。但是,我也想在此子列表中包含团队名称用于显示目的。如何将TeamName字段包含在查询中创建的MatchTeams组中?

+0

你想检索一个团队所玩过的所有比赛,没关系,但我不明白你想要什么。它是来自输入团队的数据还是来自对手团队的数据?如果是这样,你说你得到的每个记录都有一个包含比赛中出场球队的名单,所以你应该能够从该名单中得到球队名称。 – Hal 2010-11-02 12:54:08

+0

两者。基本上我从一个组合框中选择一个球队,然后我想要带回该球队参与的每场比赛(无论是主场还是客场),并在每场比赛中为MatchTeam加上详细信息。我想在此包含TeamName,但它来自第三个表,我不知道如何将它包含在Group Join子句中。 – user494711 2010-11-02 12:59:18

回答

0

只是一个猜测...

是否有可能做这样的事情:

Select M, T _ 
Group Join MT2 In MyMatchEntites.MatchTeam _ 
On MT2.Match.MatchId Equals M.MatchId _ 
Group Join T In MyMatchEntites.Team 
On T.TeamId = MT2.TeamId 

我敢肯定,你可以做多GroupJoins使用LINQ,但我不知道关于在select子句中检索多个实体。顺便说一下,这将返回整个Team实体,而不仅仅是字段TeamName。

希望这会有所帮助。

+0

不幸的是,它不喜欢那样,因为它在第一个Group Join子句之后期待INTO。 – user494711 2010-11-02 13:33:57

+0

好吧,也许你可以在Into语句后放置第二个GroupJoin语句。 – Hal 2010-11-02 13:39:27

+0

我试过了,但是它不允许你引用回MT2.TeamId。我想我必须找到另一种方式来做到这一点。无论如何,感谢您的努力。 – user494711 2010-11-02 14:02:50