2014-09-03 2 views
0

는 SQL :EF 코드 람다 표현을 사용하여 왼쪽 결합을 구현하는 방법은 무엇입니까?

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

내가이 SQL 여기

에서 동일한 결과를 얻을 EF 람다를 사용하고자하는 것은 내가 무슨 짓을했는지입니다 : 여기

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 –

+0

http://stackoverflow.com/questions/16661544/left-join-or-right-join-using-linq-entity-framework –

+0

또는이 중 하나 일 수 있습니다. http://stackoverflow.com/questions/19356439/ 왼쪽 join-in-linq-to-entities –

답변

0

...

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

이 도움이 될 기사 위에서 인용입니다 ... MSDN에서이 문서가 도움이 많이 될 것 hink

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 :

귀하의 요청에 따라 람다 식은 다음과 같을 것입니다 ...

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

맞는지 확실하지는 않지만 출발점이라면 적어도 ...

+0

고마워. 하지만 람다 표현을 사용하고 싶습니다. SELECT 부분'.select()'를 코딩하는 법을 모르겠습니다. – wtf512

+0

'DefaultIfEmpty()'가 여기 키가되어야합니다. 람다 식에서 어디에서 사용할 수 있는지 확인하십시오. 람다 익스프레션을 사용하고자하는 특별한 이유가 있습니까? Linq 쿼리는 완벽하게 작동합니다 ... –

+0

Linq는 괜찮습니다. 나는 단지 내가 원하는 것을 얻기 위해 다른 방법을 원한다 :) – wtf512

관련 문제