2014-09-03 21 views
0

SQL:EF代碼如何使用lambda expresssion實現左連接?

select a.id, b.name 
from a 
left join b on a.id = b.id 

我想使用EF lambda來得到同樣的結果在這個SQL

這裏是我做了什麼:

var list = entities.a 
    .GroupJoin(
     entities.b, 
     a => a.id, 
     b => b.id, 
     (a, b) => new { a, b }) 
    .Select(o => o) 
    .ToList(); 

這裏Select(o => o),我只是不知道如何得到相同的結果sql

select a.id, b.name 
+0

可能是http://stackoverflow.com/questions/3404975/left-outer-join-in -linq – 2014-09-03 04:00:43

+0

http://stackoverflow.com/questions/16661544/left-join-or-right-join-using-linq-entity-framework – 2014-09-03 04:01:04

+0

或可能是這一個http://stackoverflow.com/questions/19356439/ left-join-in-linq-to-entities – 2014-09-03 04:01:21

回答

0

我t hink這篇文章從MSDN會有很多有益的......

http://msdn.microsoft.com/en-us/library/bb397895.aspx

這是從上述文章報價,這可能有助於...

var query = from person in people 
     join pet in pets on person equals pet.Owner into gj 
     from subpet in gj.DefaultIfEmpty() 
     select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) }; 

UPDATE:

根據您的要求,Lambda表達會是這樣的...

.SelectMany(@a => @[email protected](), (@a, joineda) => new {@a, joineda}) 

不確定,如果它是正確的,但它是一個起點,至少...

+0

謝謝。但我想用lambda expresssion。我不知道如何編寫SELECT部分​​'.select()' – wtf512 2014-09-03 05:17:14

+0

'DefaultIfEmpty()'應該是這裏的關鍵。請檢查您可以在Lambda Expression中使用的位置。是否有任何特定的原因要使用Lambda Expression? linq查詢完美地工作... – 2014-09-03 06:08:38

+0

Linq很好,我知道了。我只是想有另一種方式得到我想要的:) – wtf512 2014-09-03 06:25:38