我有一个这样的消息表:
Id Message Column1
--------------------------
1 asdasdd 1
2 dsfsfsf 1
3 safsafs 2
4 afewfff 3
5 adw qwd 2
我想获取Column1上每个不同值的最新记录,这表示通过此代码的第2、4和5行:
Messages.OrderByDescending(a => a.Id).GroupBy(a => a.Column1).Select(a => a.Key).ToList();
我只需要ID行,但什么也没有返回。我已经用sql完成了操作,但是无法转换为EF lambda。
select max(Id) as Id from [Messages]
group by Column1
order by Id DESC
答案 0 :(得分:1)
您正在选择key
,在group by
中表示column1
,您正在其中对值进行分组。如您所料,获取值的一种方法是尝试如下操作:
var query = Messages.GroupBy(item => item.Column1).Select(group => group.Last().Id)
.OrderBy(item => item.Id)
.Select(a => a.Id)
.ToList();
或获取完整的行:
var query = Messages.GroupBy(item => item.Column1)
.Select(group => group.Last())
.OrderBy(item => item.Id)
.Select(a => a)
.ToList();