问题描述
当前有一张数据表,包含了如下的字段信息:
Id, AccountId, Version, DownloadNo, Date
部分示例数据如下:
Id | AccountId | Version | DownloadNo | Date |
---|---|---|---|---|
28092 | 15240000 | 1.0.7.1782 | 2009040004731 | 2009-01-20 13:10:22.000 |
28094 | 61615000 | 1.0.7.1782 | 2009040007696 | 2009-01-20 13:11:38.000 |
28095 | 95317000 | 1.0.7.1782 | 2009040007695 | 2009-01-20 13:10:18.000 |
28101 | 15240000 | 1.0.7.1782 | 2009040004740 | 2009-01-20 14:10:22.000 |
28103 | 61615000 | 1.0.7.1782 | 2009040007690 | 2009-01-20 14:11:38.000 |
28104 | 95317000 | 1.0.7.1782 | 2009040007710 | 2009-01-20 14:10:18.000 |
在.NET/C#应用程序中,使用LINQ分组排序后获取每组第一条记录的实现方法有哪些?
方案一
如果只需要每个用户(AccountId)的日期部分,可以使用如下的LINQ
实现,如:
var q = from n in table
group n by n.AccountId into g
select new {AccountId = g.Key, Date = g.Max(t=>t.Date)};
或者,需要每个用户的完整信息,则:
var q = from n in table
group n by n.AccountId into g
select g.OrderByDescending(t=>t.Date).FirstOrDefault();
方案二
用lambda
表达式实现的方法:
var q = _context
.lasttraces
.GroupBy(s => s.AccountId)
.Select(s => s.OrderByDescending(x => x.Date).FirstOrDefault());
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册