Как я могу получить все дочерние записи в одном запросе, если мне нужно найти родительский идентификатор? - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть модель с отношениями родитель-ребенок.Year и Week

Years: YearID, Name
Weeks: WeekID, YearID, Name

Итак, если у меня есть YearSelected, чтобы получить все недели года, я делаю:

List<Week> weeks = db.weeks.Where(w => w.YearID == model.YearSelected).ToList();
model.WeekList = new SelectList(weeks, "WeekID", "Name");

Но в БД я только сохраняюWeekID поэтому есть только model.WeekSelected

Итак, как я могу получить все недели того же года, что и model.WeekSelected

Сначала я могу сделать запрос, чтобы получить YearID, но задаюсь вопросом,может сделать это в одной строке.

int YearID = db.weeks.Where(w => w.WeekID == model.WeekSelected)
                     .SingleOrDefault().YearID.Value;

1 Ответ

0 голосов
/ 25 апреля 2018

Вам потребуется использовать подзапрос, чтобы получить YearID:

List<Week> weeks = db.weeks
    .Where(w => w.YearID == db.weeks.First(w => w.WeekID == model.WeekSelected).YearID)
    .ToList();

. Это дает более простой SQL, не уверенный в том, что он влияет на производительность, когда вы знаете, что WeekSelected соответствует толькоодин ряд:

List<Week> weeks = db.weeks
    .Where(w => w.YearID == db.weeks.Single(w => w.WeekID == model.WeekSelected).YearID)
    .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...