2010-01-29 1 views
3

Я пытаюсь выяснить, что я делаю неправильно в приведенной ниже инструкции LINQ. Это не нравится третий SELECT. Он находит tblAddresse.tblAdminCounty в Intelisense, когда я печатаю запрос, но когда я набираю SELECT после того, как он уродует.LINQ Один для многих, 3 уровня Глубокий вопрос

Это связано с тем, как связаны tblAddress и tblAdminCounty? Я бы подумал, что тот факт, который он показывает в Intellisense под номером tblAddress, сделает это утверждение само собой разумеющимся, но, очевидно, нет.

Если бы я был запросить только CountyName в отдельной функции она будет выглядеть следующим образом ->

var countyName = from adminCounty in context.tblAdminCounties 
       where adminCounty.CountyID == countyID 
       select adminCounty.CountyName; 

И это больше 3-уровневый подход, основанный на этом сайте ->HERE

var query = from tblBusinesse in context.tblBusinesses 
      where tblBusinesse.BusinessID == businessID 
      select new 
      { 
       tblBusinesse.BusinessName, 
       tblBusinesse.ContactName, 
       tblBusinesse.EmailAddress, 
       Address = from tblAddresse in tblBusinesse.tblAddresses 
         select new 
         { 
          tblAddresse.AddressLine1, 
          tblAddresse.AddressLine2, 
          tblAddresse.AddressLine3, 
          tblAddresse.CityName, 
          County = from adminCounty in tblAddresse.tblAdminCounty 
            select new 
            { 
             adminCounty.CountyName 
            } 

         } 
      }; 
+0

@ Джон тарелочкам: Спасибо, я никогда не кажется, чтобы получить код для правильного форматирования. Я думаю, что один должен объяснить многое ... –

+0

Я подозреваю, что вы также найдете жизнь проще, если у вас не было «tbl» перед всем :) –

+0

@Jon Skeet: :) Действительно! К счастью, в этом случае, это только в примере кода, который я опубликовал, а не в моей фактической базе кода для моего проекта. –

ответ

2

Вы пытаетесь запросить его, как если бы один адрес имел несколько округов. Не факт, что он называется tblAdminCounty, а не tblAdminCounties, предполагает, что это всего лишь один элемент?

Попробуйте это изменить:

County = from adminCounty in tblAddresse.tblAdminCounty 
     select new 
     { 
      adminCounty.CountyName 
     } 

не только:

County = tblAddresse.tblAdminCounty 
+0

Это сделало, спасибо! Наверное, я не совсем понял, что подразумевал подзапрос. –

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