首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按最近日期排序列表,但不按旧日期排序

按最近日期排序列表,但不按旧日期排序
EN

Stack Overflow用户
提问于 2018-04-22 13:32:45
回答 1查看 511关注 0票数 0

我有一份列有日期的清单,我想根据这些日期进行排序:

  • 今天的日期应该排在最前面。
  • 将来的日期应该按最近的日期进行排序(例如,今天=8,我们的日期是18,9,11应该是=> 9,11,18)
  • 比今天的日期更早的日期应该列在降序列表的底部。

做这个最好的方法是什么?

  • 是为了创造一个未来的名单,
  • 旧的列表和现在的列表,然后连接和排序它们?
  • 或者我能以更好的方式实现这一点?

为了使这个更加清晰,排序列表应该是的样子:

今天=>后天=>后天=>未来的日子.=>昨天=>比昨天大

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-22 14:02:06

代码语言:javascript
复制
var dates = new List<DateTime>()
{
    DateTime.Today,
    DateTime.Today.AddDays(1),
    DateTime.Today.AddDays(-2),
    DateTime.Today.AddDays(5),
    DateTime.Today.AddDays(-5)
};

今天的日期应该排在最前面。

代码语言:javascript
复制
DateTime today = dates.Where(x => x == DateTime.Today).First();

将来的日期应该按最近的日期进行排序(例如,今天=8,我们的日期是18,9,11应该是=> 9,11,18)

代码语言:javascript
复制
List<DateTime> futureDates = dates.Where(x => x > today).ToList();
futureDates.Sort();

比今天的日期更早的日期应该列在降序列表的底部。

代码语言:javascript
复制
List<DateTime> oldDates = dates.Where(x => x < today).OrderByDescending(x => x).ToList();

这是最后的汇总结果:

代码语言:javascript
复制
var final = new List<DateTime>();
final.Add(today);
final.AddRange(futureDates);
final.AddRange(oldDates);

<== Fiddle ==>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49966478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档