2010-06-21 8 views
0

누군가가 SQL 쿼리를 LINQ로 변환하는 데 도움이 될 수 있습니까? 저는 linq로 사용하기에 꽤 편리하지만 여기서는 linqpad를 다운로드 할 수 없습니다.SQL에서 linq 로의 변환에 대한 도움말

select 
    t.*, 
    l.* 
from 
    email_templates t 
left join 
    (select 
     id as email_id, 
     sent_at, 
     sent_by 
    from 
     email_log 
    where 
     id = (select max(id) 
       from email_log 
       where as_at_date = '20100618' 
       group by template_id ) 
    )l 
on t.id = v.template_id 

답변

1

나는 당신의 질문을 이해합니다. 당신은 당신이 관리 부분에 검색어를 깰 수 있도록

var maxId = (from e in email_log 
      where e.as_at_date < new DateTime(2010, 06, 18) 
      group e by e.template_id into grouped 
      select grouped.Max(a => a.id)).First(); 

var selectedEmailLog = from e in email_log 
         where e.id == maxId 
         select new 
         { 
          email_id = e.id, 
          e.sent_at, 
          e.sent_by, 
          e.template_id, 
         }; 

var seletedRows = from t in email_templates 
        join l in selectedEmailLog 
        on t.id equals l.template_id into tls 
        from tl in tls 
        select new 
        { 
         t.id, 
         tl.email_id, 
         tl.sent_at, 
         tl.sent_by, 
        }; 

이 ... LINQ이 작성 가능하다 ... 이런 식으로 뭔가를해야합니다. 쿼리를 작은 부분으로 나누면 훨씬 쉽게 이해할 수 있습니다. 데이터베이스에서 단층 레코드 렌더링을 작성하는 대신 복잡한 오브젝트를 리턴 할 수도 있습니다.