Как выбрать из таблицы ссылок на основе значения из другой таблицы ссылок - PullRequest
0 голосов
/ 29 сентября 2019

Допустим, у нас есть таблицы

Студент

Id,
Name

ClassRoom

Id,
Room Number

StudentClassRoom

Id
StudentId
ClassRoomId

Домашнее задание

Id
Name

StudentHomework

Id
StudentId
HomeworkId
CreatedAt

Я хочу найти всеStudentHomework записывает всех учеников, с которыми я учусь.

Например, если есть 4 класса, A, B, C, D. Если я нахожусь в классах A, B, C, то я хочу иметь возможность найти все записи StudentHomework, где находится Studentв том же StudentClassRoom, что и я.

Я пытался

            return Context.StudentHomeworks
                .Where(e => e.Student.StudentClassRooms.Select(b => b.Student.Id).Contains(e.Student.Id))
                .OrderByDescending(b => b.CreatedAt)

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

1 Ответ

0 голосов
/ 30 сентября 2019

Я бы сделал что-то подобное:

    var myId = 1111111;

    // first select all ids of student in your class
    var studentInMyClass = Context.StudentClassRooms
        .Where(a => a.StudentId == myId).Select(a => a.StudentId).ToList();

    // then select homeworks of those students
    return studentHomeworks
        .Where(b => studentIdsInMyClass.Contains(b.StudentId))
        .OrderByDescending(b => b.CreatedAt);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...