2012-04-09 34 views
2

我試圖創造EF 4.0查詢中的LINQ 2 SQL像下面的SQL查詢。如何實現加入使用LINQ和的EntityFramework

SELECT * FROM Role 
LEFT JOIN Queue 
ON Role.RoleId = Queue.RoleId 
WHERE QueueId = 361 

那麼我怎麼能在EF 4.0中做到這一點?

+1

你的意思是LINQ的;沒有Linq到Sql。 – 2012-04-09 06:34:15

+0

@AndrewBarber:不,我很確定他的意思是LINQ to SQL。或者更準確地說LINQ to Entities,因爲他正在對EF進行映射。在這裏看到:http://msdn.microsoft.com/en-us/library/bb386964.aspx – 2012-04-09 06:36:56

+2

@Mike的LINQ to SQL是一個EF完全不同的產品。這就像說他在談論nHibernate。 – 2012-04-09 06:40:48

回答

4

通常這是使用被加載時,你得到的實體,但是你也可以用下面這樣做導航屬性來完成:

from r in Roles 
from q in Queues 
where r.RoleId == q.RoleId 
where q.QueueId == 361 
select new { r.RoleId, q.QueueId /*other bits you want*/} 
+0

嗨。如果我有多個表,那麼這個工作? – Ali 2012-04-09 06:53:08

+0

@Ali當然可以,* from *表示linq中查詢可用的數據源。這與SQL本身內部的JOIN概念類似,當linq查詢被轉換爲SQL時,這將變成SQL JOIN。我喜歡*中的多個*,而不是* join *語句,因爲它的可讀性更高 – 2012-04-09 07:01:03

+0

感謝您的幫助。 – Ali 2012-04-09 07:02:30

3

嘗試以下方法,我希望它有助於

我會推薦搜索更多關於加入

var result=(from p in Roles 
join pa in Queue on p.RoleId equals pa.RoleId into temproles 
from addresses in temproles.DefaultIfEmpty() where temproles.queueId = 361 
select new { p, pa});