0

我有一张表,它的数据如下所示:

 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

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

谢谢

4

1 回答 1

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) 的名称和类型应该匹配。

于 2012-08-31T09:31:16.497 回答