2010-01-29 95 views
3

我想弄清楚我在做下面的LINQ語句錯誤。它不喜歡第三個SELECT。在我輸入查詢時,它在Intelisense中找到tblAddresse.tblAdminCounty,但是當我在它後面輸入SELECT時,它會發生怪異現象。LINQ一對多,三級深問題

是否與tblAddresstblAdminCounty有什麼聯繫?我認爲它在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

@喬恩飛碟雙向:謝謝你,我似乎從來沒有把我的代碼以正確的格式。我猜這一個人應該解釋很多... – 2010-01-29 21:23:47

+0

我懷疑你也會發現生活更容易,如果你沒有在所有的東西「tbl」:) – 2010-01-29 21:25:42

+0

@Jon Skeet::)的確!幸運的是,在這種情況下,這只是在我發佈的示例代碼中,而不是在我的項目實際代碼庫中。 – 2010-01-29 21:26:42

回答

2

您試圖查詢它,就好像一個地址有多個縣一樣。它不叫tblAdminCounty而不是tblAdminCounties這個事實表明它只是一個單一的項目?

嘗試修改此:

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

只是:

County = tblAddresse.tblAdminCounty 
+0

這樣做了,謝謝!我想我並不完全理解子查詢的含義。 – 2010-01-29 21:34:48