2009-07-09 21 views
0

LINQクエリでテーブルをジョインするときに問題があります。単純なLINQクエリ

alt text http://www.kalleload.net/uploads/qiscjknuhutn.jpg

あなたはそこに3つのテーブルがある見ることができるように。私のウェブページ上で、私はリストビューに次のデータを表示したい。

betid | bet.title | bet.description | match.location | match.begindate/enddate |チームンNAME |チーム名。

これを説明します。 私は賭けテーブルから3つのフィールドが必要です。 マッチテーブルの2つのフィールドが必要です(match.matchid = bet.matchid) TEAMテーブルの2つのフィールドが必要です(match.teamone = team.teamidとmatch.teamtwo = team.teamid)

これは意味があると思う。

ありがとう

答えて

3

に見えます定義された。デザイナーを使用している場合は、生成されたクラスに既存のエンティティが存在する必要があります。

var result = bet.Select(b => new { 
       BetID = b.betid, 
       Title = b.title, 
       Description = b.description, 
       BeginDate = b.match.begindate, 
       EndDate = b.match.enddate, 
       TeamOneName = b.match.team_1.teamname, 
       TeamTwoName = b.match.team_2.teamname 
       }); 

私はアソシエーション名を推測していることに注意してください。あなたはデザイナーがそれらに与えた名前を理解することができるはずです。

+0

はい、同意します。私の解決策よりもずっと読みやすい:) –

2
この1の鍵は、このように、チーム1とチーム2のために、チームのテーブルの上に自己結合を含めることです

:あなたはすでに関係を持っているよう

var result = from bet in db.bet 
    join match in db.match on bet.matchid equals match.matchid 
    join team1 in db.team on match.teamone equals team1.teamid 
    join team2 in db.team on match.teamtwo equals team2.teamid 
    select new {bet.betid, bet.title, bet.description, match.location, match.begindate, match.enddate, team1.name, team2.name}; 
関連する問題