如何从带日期属性的对象列表中筛选出持有最新日期的全部对象实例
实现方案(C# 基于LINQ)
你可以通过两种常用方式实现需求,两种都支持返回所有出生日期相同的最小年龄球员:
方法1:先取最大出生日期再过滤(性能更优,适合大数据量场景)
先遍历一次列表拿到最新的出生日期,再二次遍历筛选匹配的球员:
List<Player> playerList = // 你的球员列表实例 // 先做非空判断避免异常 if (!playerList.Any()) { // 空列表处理逻辑,比如直接返回空集合 return new List<Player>(); } DateTime latestBirthDate = playerList.Max(p => p.BirthDate); List<Player> youngestPlayers = playerList.Where(p => p.BirthDate == latestBirthDate).ToList();
方法2:分组排序取首组(写法更简洁,适合小数据量场景)
按出生日期分组后倒序排列,直接取第一组的所有元素:
List<Player> youngestPlayers = playerList .GroupBy(p => p.BirthDate) .OrderByDescending(g => g.Key) .FirstOrDefault()? .ToList() ?? new List<Player>();
该写法自带空列表兼容,就算输入列表为空也会返回空集合不会抛出异常
内容的提问来源于stack exchange,提问作者Dr.Droid
相关产品推荐
相关产品推荐

