You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LINQ获取每个Title对应的最新数据表记录?

按Title分组并获取每个组的最新日期项

原始集合

var raw = new[] {    
    new { Title = "Sergio", Date= "18-12-2021"},
    new { Title = "Sergio", Date= "18-10-2021"},
    new { Title = "Sergio", Date= "18-11-2021"},
    new { Title = "Jose", Date= "19-12-2021"},
    new { Title = "Jose", Date= "18-12-2021"},
    new { Title = "Jose", Date= "17-12-2021"},
    new { Title = "Marco", Date= "16-12-2021"}
};

需求

需要得到每个Title对应最新注册日期的集合,预期输出如下:

var result = new[] {
    new { Title = "Sergio", Date= "18-12-2021"},
    new { Title = "Jose", Date= "19-12-2021"},
    new { Title = "Marco", Date= "16-12-2021"}
};

解决方案

你可以通过GroupBy分组后,对每个组内的元素按日期(转换为DateTime类型,避免字符串排序的误差)降序排列,再取第一个元素来实现:

var result = raw.GroupBy(item => item.Title)
                .Select(group => 
                    group.OrderByDescending(item => 
                        DateTime.ParseExact(item.Date, "dd-MM-yyyy", null)
                    ).First()
                )
                .ToArray();

关键说明

  • 直接对Date字符串排序会存在逻辑错误(例如"31-12-2021"字符串排序会落后于"01-01-2022",但实际日期更早),所以必须先通过DateTime.ParseExact将字符串转换为DateTime类型再进行比较。
  • GroupBy按Title分组后,每个组包含同一Title的所有元素,通过OrderByDescending按日期降序排列,取第一个元素就是该组的最新日期项。

内容的提问来源于stack exchange,提问作者Sergio Rondon Polanco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:06:15