Я воссоздал ваш сценарий здесь и смог получить все результаты в одном запросе.
var a = from trip in context.Trips.Include("TripLocations.Location")
select trip;
Вот и все. Вот что было запрошено в моей базе данных:
SELECT
[Project1].[TripId] AS [TripId],
[Project1].[Name] AS [Name],
[Project1].[C1] AS [C1],
[Project1].[TripId1] AS [TripId1],
[Project1].[LocationId] AS [LocationId],
[Project1].[LocationId1] AS [LocationId1],
[Project1].[Name1] AS [Name1]
FROM ( SELECT
[Extent1].[TripId] AS [TripId],
[Extent1].[Name] AS [Name],
[Join1].[TripId] AS [TripId1],
[Join1].[LocationId1] AS [LocationId],
[Join1].[LocationId2] AS [LocationId1],
[Join1].[Name] AS [Name1],
CASE WHEN ([Join1].[TripId] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]
FROM [dbo].[Trips] AS [Extent1]
LEFT OUTER JOIN (SELECT [Extent2].[TripId] AS [TripId], [Extent2].[LocationId] AS [LocationId1], [Extent3].[LocationId] AS [LocationId2], [Extent3].[Name] AS [Name]
FROM [dbo].[TripLocations] AS [Extent2]
INNER JOIN [dbo].[Locations] AS [Extent3] ON [Extent2].[LocationId] = [Extent3].[LocationId] ) AS [Join1] ON [Extent1].[TripId] = [Join1].[TripId]
) AS [Project1]
ORDER BY [Project1].[TripId] ASC, [Project1].[C1] ASC
UPDATE:
Если вы хотите сохранить лямбда-версию, это сработает:
IQueryable<Trip> query = from ride in context.Set<Trip>()
.Include(t=>t.TripLocations.Select(l=>l.Location))
select ride;
Дополнительная информация в блоге MSDN .