You should use SelectManyfor this:
ScheduleItems.SelectMany(s => s.ScheduleModules)
This exactly matches your initial foreach nested loop. This is also equivalent to the expression of this query:
from s in ScheduleItems
from m in s.ScheduleModules
select m
(although this will use a slightly different form SelectMany).
Aggregate : Union, IEnumerable<T>, as Collection<T>. Union Collection<T>, as .