我有下表:
id serialcode timestamp
1 0001 01/02/2015
2 0001 02/02/2015
3 0001 03/02/2015
4 0002 03/02/2015
在linq中,我想获得单个(分组)序列码的最大ID。之后,我想订购降序时间戳的结果。
在这个例子中,首先,我想要提取以下行:
id serialcode timestamp
3 0001 03/02/2015
4 0002 03/02/2015
然后我想按降序时间戳订购。 如何在Linq中实现这一目标?
谢谢
答案 0 :(得分:3)
db.Table.GroupBy(x => x.serialcode)
.Select(g => g.OrderByDescending(x => x.id).First())
.OrderByDescending(x => x.timestamp);
答案 1 :(得分:1)
另一种方法是使用 Max() 功能:
var qry = from r in dt.AsEnumerable()
group r by r.Field<string>("serialcode") into grp
select new {
id = grp.Max(a=>a.Field<int>("id")),
serialcode = grp.Key,
timestamp = grp.Max(a=>a.Field<DateTime>("timestamp"))
};
结果(如预期):
id serialcode timestamp
3 0001 2015-02-03 00:00:00
4 0002 2015-02-03 00:00:00