J'écris une instruction LINQ to SQL, et je suis après la syntaxe standard pour une jointure interne normale avec une ON
clause en C #.
Comment représentez-vous les éléments suivants dans LINQ to SQL:
select DealerContact.*
from Dealer
inner join DealerContact on Dealer.DealerID = DealerContact.DealerID
Réponses:
Cela va quelque chose comme:
Ce serait bien d'avoir des noms et des champs raisonnables pour vos tables pour un meilleur exemple. :)
Mise à jour
Je pense que pour votre requête, cela pourrait être plus approprié:
Puisque vous recherchez les contacts, pas les revendeurs.
la source
from c or from t1
Et parce que je préfère la syntaxe de la chaîne d'expression, voici comment vous le faites:
la source
Pour étendre la réponse de la syntaxe de la chaîne d'expression par Clever Human:
Si vous vouliez faire des choses (comme filtrer ou sélectionner) sur les champs des deux tables jointes - au lieu d'une seule de ces deux tables - vous pourriez créer un nouvel objet dans l'expression lambda du paramètre final de la méthode Join incorporant ces deux tableaux, par exemple:
La partie intéressante est l'expression lambda à la ligne 4 de cet exemple:
... où nous construisons un nouvel objet de type anonyme qui a pour propriétés les enregistrements DealerContact et Dealer, ainsi que tous leurs champs.
Nous pouvons ensuite utiliser les champs de ces enregistrements pendant que nous filtrons et sélectionnons les résultats, comme le montre le reste de l'exemple, qui utilise
dc_d
comme nom pour l'objet anonyme que nous avons construit qui a à la fois les enregistrements DealerContact et Dealer comme propriétés.la source
la source
ContactStatus
c'est vraiment une énumération, et cec.StatusID
n'est pas vraiment un ID, mais la valeur numérique de l'énumération. Si je ne me trompe pas, il(ContactStatus)c.StatusID
s'agit simplement de convertir un entier en une énumération.Utilisez l' opérateur Linq Join :
la source
Vous créez une clé étrangère et LINQ-to-SQL crée des propriétés de navigation pour vous. Chacun
Dealer
aura alors une collectionDealerContacts
dont vous pourrez sélectionner, filtrer et manipuler.ou
Si vous n'utilisez pas les propriétés de navigation, vous manquez l'un des principaux avantages de LINQ-to-SQL - la partie qui mappe le graphique d'objet.
la source
fondamentalement, l' opérateur de jointure LINQ n'offre aucun avantage pour SQL. C'est-à-dire la requête suivante
entraînera INNER JOIN en SQL
join est utile pour IEnumerable <> car il est plus efficace:
serait réexécutée pour chaque revendeur Mais pour IQueryable <> ce n'est pas le cas. Aussi adhésion est également moins flexible.
la source
En fait, il vaut souvent mieux ne pas adhérer, en linq c'est-à-dire. Lorsqu'il existe des propriétés de navigation, un moyen très succinct d'écrire votre instruction linq est:
Cela se traduit par une clause where:
la source
SelectMany()
.Utilisez les jointures LINQ pour effectuer la jointure interne.
la source
Essaye ça :
la source
la source
Où les tables des étudiants et des cours ont une relation clé primaire et clé étrangère
la source
essayez plutôt ceci,
la source
la source
la source
Écrivez les noms de table souhaités et initialisez la sélection pour obtenir le résultat des champs.
la source
Jointure interne de deux tables en linq C #
la source
de d1 dans DealerContrac rejoindre d2 dans DealerContrac sur d1.dealearid est égal à d2.dealerid sélectionnez nouveau {dealercontract. *}
la source
Un meilleur exemple
Noms de table:
TBL_Emp
etTBL_Dep
la source