2009-07-09 3 views
0

Ich habe Probleme bei der Verknüpfung Tabellen bei einer LINQ-Abfrage.einfache LINQ-Abfrage

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

Wie Sie sehen können, gibt es drei dort Tabellen. Auf meiner Webseite möchte ich die folgenden Daten in einer Listenansicht anzeigen.

betid | bet.title | Wettbeschreibung | match.location | match.begindate/enddate | teamone NAME | teamtwo Name.

so lassen Sie mich das erklären. Ich möchte 3 Felder aus der Wette Tabelle. Ich möchte zwei Felder aus der Übereinstimmungstabelle (wo die match.matchid = bet.matchid) I 2 Felder aus der TEAM Tabelle wollen (wo match.teamone = team.teamid und match.teamtwo = team.teamid)

ich hoffe das macht Sinn.

thankyou

Antwort

3

Es sieht aus wie Sie bereits die Beziehungen haben definiert. Wenn Sie den Designer verwenden, sollten Sie vorhandene Entitäten in den generierten Klassen haben.

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 
       }); 

Beachten Sie, dass ich nur bei den Assoziationsnamen rate. Sie sollten in der Lage sein, die Namen zu finden, die ihnen vom Designer gegeben wurden.

+0

Ja, ich stimme zu. Viel lesbarer als meine Lösung auch :) –

2

Der Schlüssel zu diesem einen Selbst im Team Tisch sitzen enthalten ist, für Team ein und Team zwei, wie folgt aus:

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};