LINQ: Как выбрать 3 разных значения столбца из 3 разных таблиц? - PullRequest
1 голос
/ 21 февраля 2012

У меня есть три таблицы Corevalue, SubjectType и Question.

Я хочу выбрать CoreValue.Sname, SubjectType.Cname и Question.QuestionText, я знаю, как он работает с SQL, но не с LINQ, любая помощь приветствуется.

Что-то вроде этого в SQL:

SELECT 
   CoreValue.Cname, 
   Question.Questiontext, 
   SubjectType.Sname 
FROM 
   Corevalue 
JOIN Question
   ON Corevalue.CID = question.QID 
JOIN SubjecType 
   ON Question.QID = SubjectType.SID;

Я уверен, что это правильно, но я хочу LINQ: /

Спасибо заранее

С наилучшими пожеланиями!

1 Ответ

4 голосов
/ 21 февраля 2012

Вам просто нужно также выразить объединение в 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
            };

Конечно, если вы отобразили свои связи с базой данных, вам, возможно, не нужно явно выполнять объединение, предпочитая вместо этого простые свойства - этовсе зависит от того, как вы используете LINQ.

Обратите внимание, что ваши объединения кажутся немного странными с точки зрения имен идентификаторов - это как если бы у вас действительно было три сущности, все использующие точно одинаковые идентификаторы.Я бы ожидал чего-то большего:

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