Проверьте наличие ассоциаций в конструкторе dbml. Если он заметил ваши внешние ключи, он автоматически создаст ассоциации. Если нет - вы можете добавить их самостоятельно (даже если внешний ключ не существует или не применяется).
Запрашивая свойство ассоциации, вы можете скрыть детали ваших отношений.
query =
from ri in dataContext.RouteInstances
from rir in ri.RouteInstanceRules
from rl in rir.RoutingLocations
from rlh in rl.RoutingLocationHistories
where rlh.RouteTakenTime >= new System.DateTime(2011,2,4)
&& rlh.RouteTakenTime <= new System.DateTime(2011,2,5)
Если вы хотите, чтобы результаты Guillaume86 были похожи на результаты, но без отличительных ..., тогда выполните этот фильтр подзапроса.
IQueryable<RouteInstance> query =
from ri in dataContext.RouteInstances
where ri.RouteInstanceRules
.Any(rir => rir.RoutingLocations
.Any(rl => rl.RoutingLocationHistories
.Any(rlh => rlh.RouteTakenTime >= new System.DateTime(2011,2,4)
&& rlh.RouteTakenTime <= new System.DateTime(2011,2,5)
)
)
)
select ri;