2012-07-01 1 views
0

Я пытаюсь присоединиться к 3-мя таблицам в LINQ.Более 2 таблиц JOIN в LINQ, проблема с областью

var fromCities = from c in cityRepository.Cities 
          join r in routeRepository.Routes on c.Id equals r.FromCityId 
          join cr in rentDetailRepository.CarRentDetails on cr.CityId equals c.Id 
          select c; 

Я получаю, что cr и c не существуют во втором заявлении объединения? Может ли кто-нибудь помочь?

+0

вы должны заменить йоту c.Id r.FromCityId как: присоединиться к г в routeRepository.Routes на r.FromCityId равна c.Id –

+1

Изменение порядка последнего присоединения: 'присоединиться кр в rentDetailRepository.CarRentDetails на c.Id равно cr.CityId' –

ответ

3

Изменить порядок в последнем присоединиться:

... 
join cr in rentDetailRepository.CarRentDetails on c.Id equals cr.CityId 

join clause (C# Reference)

Объединение пункта выполняет эквисоединение. Другими словами, вы можете использовать только совпадений по равенству двух ключей. Другие типы сравнений, такие как как «больше» или «не равно», не поддерживаются. Чтобы сделать ясным , что все соединения равно equijoins, предложение join использует ключевое слово equals вместо оператора ==. Ключевое слово equals можно использовать только в предложении соединения , и он отличается от оператора == одним важным способом. С равными левая клавиша потребляет внешнюю последовательность источников, а правый ключ потребляет внутренний источник. Внешний источник находится только в области с левой стороны от равных, а внутренняя последовательность источников находится только в области с правой стороны.

+0

Спасибо. Он работает сейчас. «equals» не равно «==». – Brij

Смежные вопросы