Reputation: 48177
I have a model with a parent - child relationship. Year
and Week
Years: YearID, Name
Weeks: WeekID, YearID, Name
So if I have YearSelected
, to get all the weeks from a year I do:
List<Week> weeks = db.weeks.Where(w => w.YearID == model.YearSelected).ToList();
model.WeekList = new SelectList(weeks, "WeekID", "Name");
But in DB I only save WeekID
so only have model.WeekSelected
So How I get all the week of the same Year as model.WeekSelected
I can do a query first to get the YearID, but wonder if can do it in a single line.
int YearID = db.weeks.Where(w => w.WeekID == model.WeekSelected)
.SingleOrDefault().YearID.Value;
Upvotes: 0
Views: 246
Reputation: 26907
You will need to use a sub-query to get the YearID
:
List<Week> weeks = db.weeks
.Where(w => w.YearID == db.weeks.First(w => w.WeekID == model.WeekSelected).YearID)
.ToList();
This produces simpler SQL, not sure if it makes a performance difference, when you know WeekSelected
only matches one row:
List<Week> weeks = db.weeks
.Where(w => w.YearID == db.weeks.Single(w => w.WeekID == model.WeekSelected).YearID)
.ToList();
Upvotes: 1