Внутреннее соединение в C # с лямбдой - PullRequest
0 голосов
/ 21 октября 2019

Я новичок в LINQ и Lambda. Я хочу сделать запрос, который получит меня за каждого учащегося года (1,2,3) студентов, которые учатся в этом году. Я сделал это без лямбды, но я действительно хочу знать, как это сделать с лямбдой.

            var res = from s in db.student
                  join u in db.EnrolledYear
                  on s.ID equals u.studentID
                  join g in db.studyYear
                  on u.studyYearID equals g.ID
                  select new
                  {
                      Year = g.year,
                      StudentFName = s.FirstName
                      StudentLName = s.LastName
                  };

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

var res = db.EnrolledYear.Join(db.student,
                  u => u.studentID, s => s.ID,
                  (enroll, student) => new
                  {
                      Godina = enroll.year,
                      FName = student.FirstName
                      LName = student.LastName
                  })
                  .Join(.....?)

Picture in imgur of relations in database:

Ответы [ 2 ]

3 голосов
/ 21 октября 2019

Используйте Include.

Что-то вроде:

db.students.Include(x => x.EnrolledYears).ThenInclude(x=>x.StudyYear).Select(new ...)
0 голосов
/ 21 октября 2019

Каждое предложение в запросе будет соответствовать лямбда-вызову. Просто перейдите к каждому предложению и преобразуйте его в соответствующий вызов.

Этот конкретный запрос может быть написан так:

db.student
    .Join(db.EnrolledYear, s => s.ID, u => u.studentID, (s, u) => new { s, u })
    .Join(db.studyYear, x => x.u.studyYearID, g => g.ID, (x, g) => new { x.s, x.u, g })
    .Select(x => new
    {
        Year = x.g.year,
        StudentFName = x.s.FirstName,
        StudentLName = x.s.LastName,
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...