2010-11-02 66 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