Pour étendre la syntaxe de la chaîne d'expression answer par Clever humaine:
Si vous voulez faire des choses (comme filtre ou select) sur les champs des deux tables jointes ensemble - à la place sur un seul de ces deux tables - vous pouvez créer un nouvel objet dans l'expression lambda du dernier paramètre à la méthode join intégrant ces deux tableaux, par exemple:
var dealerInfo = DealerContact.Join(Dealer,
dc => dc.DealerId,
d => d.DealerId,
(dc, d) => new { DealerContact = dc, Dealer = d })
.Where(dc_d => dc_d.Dealer.FirstName == "Glenn"
&& dc_d.DealerContact.City == "Chicago")
.Select(dc_d => new {
dc_d.Dealer.DealerID,
dc_d.Dealer.FirstName,
dc_d.Dealer.LastName,
dc_d.DealerContact.City,
dc_d.DealerContact.State });
La partie intéressante est l'expression lambda dans la ligne 4 de cette exemple:
(dc, d) => new { DealerContact = dc, Dealer = d }
... où nous construisons un nouvel objet de type anonyme qui a comme propriétés et les concessionnaireContact dossiers des courtiers, ainsi que tous leurs champs. Nous pouvons ensuite utiliser des champs de ces enregistrements comme nous filtrons et sélectionnons les résultats, comme démontré par le reste de l'exemple, qui utilise dc_d
comme nom pour l'objet anonyme que nous avons construit qui a les deux DealerContact et Dealer enregistrements comme ses propriétés.
Vous pouvez trouver [requêtes SQL dans LINQ] (http://www.codeducky.org/sql-queries-in-linq/#inner-join) utiles.Il explique comment convertir les requêtes SQL courantes, y compris les jointures internes, en syntaxe LINQ. –
Si vous avez une clé étrangère entre les tables, vous devriez regarder la réponse de Kirk Broadhurst ci-dessous. – Guilherme
Vous devez mettre au pluriel les noms de vos tables. Une table contenant (entrées sur) de nombreux concessionnaires devrait être appelée * concessionnaires *, et non revendeur. – ANeves