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!

Était-ce utile?

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
            };
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top