在实体中编写tsql查询

时间:2012-08-30 16:53:07

标签: entity-framework

我有一张桌子,它的数据如下:

 id         name       date
 ---------  ---------  ----------
 1           a          2012-08-30 10:36:27.393
 1           b          2012-08-30 14:36:27.393
 2           c          2012-08-30 13:36:27.393
 2           d          2012-08-30 16:36:27.393

我使用此查询检索最大日期时间:

select 
    t1.id
   ,t1.name
   ,t1.date 
from 
 table1 t1
 inner join (
     SELECT id,Max(date) as mymaxdate
     FROM table1
     group by id
 ) mt1
     on t1.id = mt1.id
     and t1.date = mt1.mymaxdate

结果:

1   b  2012-08-30 14:36:27.393
2   d  2012-08-30 16:36:27.393

如何在实体中编写此查询?

由于

1 个答案:

答案 0 :(得分:0)

棘手的部分是您还希望项目的名称具有最大日期,否则分组会更简单。但是有可能通过几乎1:1的sql查询再现:

from t in table1
join m in
    (from t in table1
    group t by t.id into g
    select new { g.Key, mymaxdate = g.Max (x => x.date) })
on new { t.id, t.date } equals new { id = m.Key, date = m.mymaxdate }
select t

通过创建匿名类型(new {t.id, t.date}new {id = m.Key, date = m.mymaxdate})来完成多个字段的联接,其中属性的名称和类型(iddate)应该匹配