C#基于LINQ实现带逐行剩余天数标注的周五日期列表
C#控制台日期输出格式调整实现
保留的原有逻辑
- 完全保留硬编码截止日定义、从当日到截止日全量遍历日期存入集合的原有流程,不做改动
- 完整保留通过LINQ从日期集合中筛选所有周五条目的查询代码,不替换为其他实现方式
- 原有总剩余天数的计算逻辑保持不变,可正常展示
格式调整操作
原有输出流程为逐行打印周五长格式日期、末尾单独输出总剩余天数,仅需修改遍历筛选结果时的打印逻辑即可达成目标效果,无需改动上层核心流程:
- 循环遍历LINQ筛出的周五列表时,对每一个遍历到的周五日期,计算它与截止日的时间差,取整得到该日期到截止日的剩余天数
- 打印长日期格式文本时,在末尾追加括号标注上述计算出的剩余天数
- 由于筛选出的周五列表本身按日期升序排列,越靠近截止日的周五,计算出的剩余天数越小,自然形成逐行递减的标注效果
核心代码示例
// 原有LINQ筛选逻辑100%保留,无修改 var fridayList = datePool.Where(item => item.DayOfWeek == DayOfWeek.Friday).ToList(); // 调整后的逐行打印逻辑 foreach (var currentFriday in fridayList) { // 计算当前周五到截止日的剩余天数 var daysLeft = (hardCodedDeadline.Date - currentFriday.Date).TotalDays; Console.WriteLine($"{currentFriday.ToLongDateString()}(距离截止日剩余 {(int)daysLeft} 天)"); } // 原有总剩余天数展示逻辑保留 var totalDaysLeft = (hardCodedDeadline.Date - DateTime.Today.Date).TotalDays; Console.WriteLine($"\n当前到截止日的总剩余天数:{(int)totalDaysLeft} 天");
最终展示效果
- 每一行周五日期条目后,同步标注对应日期到截止日的剩余天数
- 标注的剩余天数随日期靠近截止日逐行递减,完全符合预期展示要求
- 原有两项基础功能完整保留,无删减
内容的提问来源于stack exchange,提问作者Zong
相关产品推荐
相关产品推荐

