代码之家  ›  专栏  ›  技术社区  ›  Paul Creasey

sql到linq转换的帮助

  •  0
  • Paul Creasey  · 技术社区  · 14 年前

    有人能帮我把一个sql查询转换成LINQ吗,我对LINQ很在行,但是这有点多,我不能在这里下载linqpad!

    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 回复  |  直到 14 年前
        1
  •  1
  •   Matthew Whited    14 年前

    顺便说一下,我理解你的疑问;你需要这样的东西。。。

    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是可组合的,因此您可以将查询分解为可管理的部分。将查询分解成更小的部分将使其更易于理解。也可以返回复杂对象,而不是从数据库创建平面记录呈现。