2015-10-14 61 views
1

我的鏈接查詢LINQ的加入 - 爲您在記錄連接表

var q = from l in db.Locations 

     select new LocationWrap { 
         Location = l 

返回每個位置

一行,直到我補充一下:

var q = from l in db.Locations 

     join lcl in db.Location_Catering_Links on l.ID equals lcl.LID into catering from lcl in catering.DefaultIfEmpty()  

     select new LocationWrap { 
         Location = l, 
         hasCatering = (lcl != null) 

它然後返回許多位置記錄(如很多,因爲有)。我相信它可能會做一個左外連接,當我需要的是一個布爾是否有任何餐飲記錄。

我該怎麼做?

回答

0

假設您在位置實體中具有Location_Catering_Links導航屬性,則可以執行以下操作。

var q = from l in db.Locations 
     select new LocationWrap 
       { 
        Location = l, 
        hasCatering = l.Location_Catering_Links.Any() 
       }; 
0

你可以嘗試這樣的事:

var q = from l in db.Locations 
     select new LocationWrap 
     { 
      Location = l, 
      hasCatering = db.Location_Catering_Links.Any(x => x.ID==l.ID) 
     }; 

所以沒有任何需要一個連接。

+0

你在答案中有一個錯字。它應該是'x => x.ID == l.ID'。 – Marco

+0

@Serv oops。非常感謝你 ! – Christos