LINQ: Comment sélectionner 3 valeurs de colonne différentes à partir de 3 tables différentes?
-
28-10-2019 - |
Question
J'ai trois tables Corevalue
, SubjectType
et Question
.
Je veux sélectionner CoreValue.Sname
, SubjectType.Cname
et Question.QuestionText
, je sais comment cela fonctionne avec SQL mais aucune aide LINQ ne serait appréciée.
Quelque chose comme ça en SQL:
SELECT
CoreValue.Cname,
Question.Questiontext,
SubjectType.Sname
FROM
Corevalue
JOIN Question
ON Corevalue.CID = question.QID
JOIN SubjecType
ON Question.QID = SubjectType.SID;
Je pense que celui-ci a raison, mais je veux LINQ: /
Merci pour l'avance
Meilleures salutations!
La solution
Il vous suffit d'exprimer également la jointure en SQL:
var query = from core in db.Cores
join question in db.Questions on core.CID equals question.QID
join subject in db.Subjects on question.QID equals subject.SID
select new {
core.CoreName,
question.QuestionText,
subject.SubjectName
};
Bien sûr, si vous avez mappé vos relations de base de données, vous n'aurez peut-être pas besoin d'effectuer la jointure explicitement, préférant les propriétés simples à la place - tout dépend de la façon dont vous utilisez LINQ.
Notez que vos jointures semblent un peu bizarres, en termes de noms des identifiants - c'est comme si vous aviez en réalité trois entités utilisant toutes exactement les mêmes identifiants.Je m'attendrais à quelque chose de plus comme ça:
var query = from core in db.Cores
join question in db.Questions on core.ID equals question.CoreID
join subject in db.Subjects on core.ID equals subject.CoreID
select new {
core.CoreName,
question.QuestionText,
subject.SubjectName
};