首页 / .NET / 正文

[LINQ].NET/C#应用程序中使用LINQ分组排序后获取每组第一条记录的实现方法有哪些?

8109 发布于: 2018-03-19 读完约需4分钟

问题描述

当前有一张数据表,包含了如下的字段信息:

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());

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [LINQ].NET/C#程序开发在IEnumerable<T>的集合中查找某个元素的索引位置?

下一篇: [JSON.NET].NET/C#应用程序中将一个键值对的JSON字符串反序列化成字典Dictionary<string,string>有哪些方法?

本文永久链接码友网 » [LINQ].NET/C#应用程序中使用LINQ分组排序后获取每组第一条记录的实现方法有哪些?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册