我有一张桌子,它的数据如下:
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
如何在实体中编写此查询?
由于
答案 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}
)来完成多个字段的联接,其中属性的名称和类型(id
和date
)应该匹配