LINQ Один ко многим, 3 уровня Deep Question - PullRequest
3 голосов
/ 30 января 2010

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

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

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

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

А это более масштабный трехуровневый подход, основанный на этом сайте -> ЗДЕСЬ

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
                                   }

                      }
            };

1 Ответ

2 голосов
/ 30 января 2010

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

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

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

просто:

County = tblAddresse.tblAdminCounty
...