2 回答
TA贡献1942条经验 获得超3个赞
如何将问题分解为 2 个子问题?
子问题#1
仅显示从今天起 7 天内的注册日期
我们只需要StudentsEnrollDate从今天起 7 天内的属性:
var today = DateTime.UtcNow;
sevenDaysOldList = listOfStudents.Where(x => (today - x.EnrollDate).TotalDays < 7);
两个日期相减的结果是TimeSpan带有TotalDays属性的,我们可以用它来确定两个日期之间经过的天数。
子问题#2
将列表排序为从最新到最旧的显示。
我们需要sevenDaysOldList按EnrollDate降序排序:
sevenDaysOldList.Sort((x, y) => y.EnrollDate.CompareTo(x.EnrollDate));
..这将对列表进行排序。OrderByDescending是一个很好的候选者(它返回一个新的有序列表实现IOrderedEnumerable<T>):
sevenDaysOldList.OrderByDescending(x => x.EnrollDate);
// and of course .OrderBy(x => x.EnrollDate) for ascending order
结合 #1 和 #2
您现在可以将两个子问题的解决方案合二为一。你如何做取决于你自己的判断。这就是我将如何做到的:
var sevenDaysOldList = listOfStudents.Where(x => (today - x.EnrollDate).TotalDays < 7)
.OrderByDescending(x => x.EnrollDate);
更新:评论中的问题
如何修改/排序删除所有小于“2018 年 6 月 26 日”的列表?因此该列表将只有大于 2018 年 6 月 26 日的数据日期。任何日期在 6 月 26 日之前的数据都将被删除
您可以在DateTime变量中初始化该日期,并将其与List<T>.RemoveAll(Predicate<T>), 一起使用以删除sevenDaysOldList小于该日期的项目:
var filterDate = new DateTime(2018, 06, 26);
sevenDaysOldList.RemoveAll(x => x.EnrollDate < filterDate);
- 2 回答
- 0 关注
- 191 浏览
添加回答
举报