【问题标题】:Help with sql to linq conversion帮助 sql 到 linq 的转换
【发布时间】:2010-06-22 02:20:25
【问题描述】:

有人可以帮我将 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

【问题讨论】:

    标签: c# linq


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

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多