Объединить 3 таблицы с лямбда-выражением? - PullRequest
4 голосов
/ 19 февраля 2011

Я в основном хочу следующий SQL-запрос в качестве лямбда-выражения:

SELECT studentname, coursename, grade
FROM student S, course C, grade G
WHERE S.id = G.studentid AND C.coursecode = G.coursecode AND G.grade<='B';

У меня проблемы, потому что мне нужно объединить 3 стола вместе.

1 Ответ

5 голосов
/ 19 февраля 2011

Ну, это выглядит как выражение запроса:

var q = from grade in db.Grades
        where grade.grade <= 'B'
        join student in db.Students on grade.studentid equals student.studentid
        join course in db.Courses on grade.coursecode equals course.coursecode
        select new { student.studentname, course.coursename, grade.grade };

(я бы обычно использовал имя переменной query вместо q - я только что использовал q для форматирования здесь.)

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

Обратите внимание, что я изменил порядок запроса, чтобы выражение "where" могло быть выражено настолько просто и эффективно, насколько это возможно. По всей вероятности, планировщик запросов SQL все равно оптимизировал бы его, но для чего-то вроде LINQ to Objects это помогло бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...