2011-08-24 2 views
0

NULLS도 반환하는 LINQ 문에서 JOIN을 수행하려고합니다. 내 코드 :LINQ NULLS가 반환되는 위치에 조인하십시오.

var linqQuery = (from r in orgServiceContext.CreateQuery("opportunity") 
    join a in orgServiceContext.CreateQuery("account") on ((EntityReference)r["accountid"]).Id equals a["accountid"] 
    join c in orgServiceContext.CreateQuery("contact") on ((EntityReference)r["new_contact"]).Id equals c["contactid"] 
    where ((EntityReference)r["new_channelpartner"]).Id.Equals(new Guid("c55c2e09-a3be-e011-8b2e-00505691002b")) 
    select new 
    { 
     OpportunityId = !r.Contains("opportunityid") ? string.Empty : r["opportunityid"], 
     CustomerId = !r.Contains("customerid") ? string.Empty : ((EntityReference)r["customerid"]).Name, 
     Priority = !r.Contains("opportunityratingcode") ? string.Empty : r.FormattedValues["opportunityratingcode"], 
     ContactName = !r.Contains("new_contact") ? string.Empty : ((EntityReference)r["new_contact"]).Name, 
     Source = !r.Contains("new_source") ? string.Empty : r["new_source"], 
     CreatedOn = !r.Contains("createdon") ? string.Empty : r["createdon"], 
     State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"], 
     Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"], 
     Eval = !r.Contains("new_colderevaluation") ? string.Empty : r.FormattedValues["new_colderevaluation"], 
     DistributorName = !r.Contains("new_channelpartner") ? string.Empty : ((EntityReference)r["new_channelpartner"]).Name, 
     ContactStreetAddress = !c.Contains("address1_line1") ? string.Empty : c["address1_line1"] 
    }); 

이것은 하나의 레코드를 풀다운합니다 contactid 일치했지만 또한 NULL contactid 레코드를 내리고 싶습니다.

아이디어가 있습니까?

+0

LINQ-to-SQL, LINQ-to-Entities 또는 LINQ-to-Objects는 무엇입니까? –

+0

이것은 linq에서 SQL로 –

+0

그래서 기본적으로 당신은 C에 올바른 조인을 원합니까? – NullUserException

답변

0

오른쪽 외부 조인은 LINQ에서 지원되지 않습니다. DistinctIfEmpty 확장 메소드를 사용하여 왼쪽 외부 조인을 수행 할 수 있도록 테이블 소스를 다시 정렬하십시오. 또는 모든 조인을 where 절로 작성하여 조인 대신 LINQ 버전의 SQL-Ansi82를 사용할 수 있습니다.

+0

아마도 그는 쿼리를 반전시켜야하며, 동일한 조인으로 오른쪽 조인을해야 할 수도 있습니다. – Gandarez

+0

예, 쿼리를 뒤집 으면 오른쪽 조인이 왼쪽으로 바뀔 수 있습니다. 또한 LINQ에서 조인이 아닌 연결을 사용하면 기본적으로 내부 조인이 아닌 외부 조인이 수행됩니다. –

+0

제안을 주셔서 감사합니다. 쿼리를 뒤집어서 무엇을 의미합니까? –

관련 문제