2011-04-06 5 views
0

저는 Linq의 초심자입니다. Linqer를 구입하기 위해 몇 가지 복잡한 SQL 쿼리를 Linq로 변환해야합니다. 불행히도 Linqer는 SQL과 하위 조인을 변환 할 수 없기 때문에 Linqer는 Linq로 변환 할 수 없습니다.여러 왼쪽 조인을 사용하는 Linq 쿼리

SELECT v.*, rci.CustomId, ci.EntryTime As CheckInTime, ci.Operator As CheckInOperator, 
    cis.Name As CheckInStation, co.EntryTime As CheckOutTime, co.Operator As CheckOutOperator, 
    cos.Name As CheckOutStation, cat.Name As Category, clr.Name As Clearance, r.ReasonForVisit As Reason, 
    s.SiteId + ' -- ' + s.SiteName As Site, e.LastName + ', ' + e.FirstName As Employee 
    FROM ((((((((((Visitor v LEFT JOIN VisitorEntry ci ON v.CheckInId = ci.Id) 
    LEFT JOIN VisitorEntry co ON v.CheckOutId = co.Id) 
    LEFT JOIN Station cis ON ci.StationId = cis.Id) 
    LEFT JOIN Station cos ON co.StationId = cos.Id) 
    LEFT JOIN Category cat ON v.CategoryId = cat.Id) 
    LEFT JOIN Clearance clr ON v.ClearanceId = clr.Id) 
    LEFT JOIN Reason r ON v.ReasonId = r.Id) 
    LEFT JOIN Site s ON v.SiteId = s.Id) 
    LEFT JOIN Employee e ON v.EmployeeId = e.Id) 
    LEFT JOIN RecordCustomId rci ON v.Id = rci.ParentId) 
    WHERE 1=1 

(나는 이유 즉, 그래서 내가 Linq에로 변환 할 필요가 이것과 같은 몇 가지 SQL 쿼리를 가지고 ""나는 누군가가이 SQL 쿼리에 대한 Linq를 코드로 나를 도울 수 바라고 쿼리에 자리)

는 또한 나는이 블로그 게시물에서 찾고 있었어요하지만 난 여전히 문제가 내 쿼리 변환하는 방법을 이해하는 데 :. http://codingsense.wordpress.com/2009/06/16/multiple-list-left-join-in-linq/

감사합니다! 마이크

답변

2

SQL에있는 모든 대괄호의 요점은 무엇입니까? 아무것도 수행하지 않는 것 같습니다. 제거하면 똑같은 결과를 얻지 않습니까? DefaultIfEmpty 메서드를 사용하여 linq에서 왼쪽 조인을 수행합니다. 나는 LinqToSql을 사용하고 있다고 가정합니까? 최근 프로젝트의 예에 내가

return from app in pi_GetApplications() 
     from names in app.tContact.tNames // Inner Join 
     from addr in app.tContact.tAddresses.DefaultIfEmpty() // Left Outer Join 
     select app; 

에 일한 아래 이것은 당신이 LinqtoSql은 실체가 관련이 있는지 알 수 있도록 당신의 DBML 파일에 정의 된 외래 키의 연관 있다고 가정합니다.

관련 문제