2012-05-11 4 views
1

을 LINQ하고 나는 때문에 내가 필요한 일부 필드 추가에 영향을주는 데이터베이스의 일부 제한하는 LINQ에 다음 SQL을 변환하는 방법을 알아낼 수 없습니다 :번역 SQL 내가 Linq를 세계에 새로 온

select sp.SessionID, 
    sp.SessionParticipationID, 
    case when z.SessionParticipationID = sp.SessionParticipationID then 1 else 0 end as RecordedFL 
from SessionParticipation sp 
inner join (
    select sp1.SessionID, 
     sp1.SessionParticipationID 
    from Meeting.SessionParticipation sp1 
    inner join RegistrantActivity ra on ra.SessionParticipationID = sp1.SessionParticipationID 
    where ra.RegistrantID = 12345 
) z on z.SessionID = sp.SessionID 

엔티티는 SessionParticipation 및 RegistrantActivity

있습니다
+1

여기에서 약간의 시간을 보냅니다 (http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b). 당신은 당신이 알아야 할 것을 배우게됩니다. –

+0

나는 이미 거기에 있었고 linq – user1286550

+0

@ user1286550의 사례 진술을 복제 할 방법을 찾지 못했습니다. ** 사례로 어려움을 겪고 있다면 ** ** http : // lancefisher에서 약탈하십시오 .net/blog/archive/2008/05/07/linq-to-sql --- case-statements.aspx ** –

답변

1

from sp in SessionParticipations 
join z in 
(from sp1 in MeetingSessionParticipations 
join ra in RegistrantActivities on sp1.SessionParticipationID equals 
            ra.SessionParticipationID 
where ra.RegistrantID = 12345 
select sp1) 
on sp.SessionID equals z.SessionID 
select new { 
      sp.SessionParticipationID, 
      RecordedFL = z.SessionParticipationID == sp.SessionParticipationID 
          ? 1 : 0 
      } 

같은 것이 Meeting.SessionParticipation 다른 테이블이 다른 스키마 이상에 있음을 가정해야한다 SessionParticipation, 그렇지 않으면 참여가 불필요하게 복잡해집니다. (다른 스키마에서 동일한 테이블 이름은 혼란 스럽지만).

+0

감사합니다. 이제는 이해합니다. Linq에는 Case 문이 없지만? : 연산자를 사용할 수 있습니다. – user1286550

관련 문제