2012-01-04 11 views
1

私は、Player、PlayerDetails、Teamの3つのテーブルを持っています。私は複数のテーブルがLinqによって結合する

from p in Player join d in PlayerDetails on p.ID equals d.PID 

ようなLINQ文を書きたいと右チームのテーブルに参加し、プレイヤーはテーブルのIDをチームに直面しているという名前の列TIDを持っています。

私は、それは確かに動作しないことができる

from p in Player join d in PlayerDetails on p.ID equals d.PID into PlayerGroup 
from t in team join g in PlayerGroup on t.ID equals g.p.ID 

のような文を書くことを試みています。私はどのようにクエリステートメントのこのようなタイプを書くか分からない、テーブルはテーブル2を結合し、次にテーブル3を右に結合する。

誰が도와ますか?

答えて

1

私はあなたがこのような何か行うことができます信じる:おかげで、

var RightJoin = 
    from t in Team 
    join l in 
     (from p in Player 
     join d in PlayerDetails on p.ID equals d.PID into pd 
     from d in pd.DefaultIfEmpty() 
     select new 
     { 
      pID = p.ID, 
      pTID = p.TID, 
      dID = d.ID 
     }) 
    on t.ID equals l.pTID into tl 
    from l in tl.DefaultIfEmpty() 
    select new 
    { 
     tID = t.ID, 
     pID = l.pID, 
     pTID = l.PTID, 
     dID = l.dID 
    }; 
+0

こんにちはOle_Brun:このような何か(テストしていません)1つのクエリですべてを行うには

var LeftJoin = from p in Player join d in PlayerDetails on p.ID equals d.PID into pd from d in pd.DefaultIfEmpty() select new { pID = p.ID, pTID = p.TID, dID = d.ID }; var RightJoin = from t in Team join l in LeftJoin on t.ID equals l.pTID into tl from l in tl.DefaultIfEmpty() select new { tID = t.ID, pID = l.pID, pTID = l.PTID, dID = l.dID }; 

を、私はあなたができると思いますあなたの返事のために。確かにうまくいくのは分かっていますが、私は2つではなく1つのステートメントを書くことができますか? – James

+0

@AI_Bryant最新の回答を見る –

関連する問題