我有一个列表,其中包含我想按照以下方式排序的日期:
这样做的最佳方法是什么??:
是否要创建未来列表,
旧列表和当前列表然后连接并对它们进行排序?
或者我能以更好的方式实现这一目标吗?
为了使这个更清晰这就是排序列表看起来像的样子:
today =>明天=>后天=>未来几天.... =>昨天=>比昨天更老了
答案 0 :(得分:3)
var dates = new List<DateTime>()
{
DateTime.Today,
DateTime.Today.AddDays(1),
DateTime.Today.AddDays(-2),
DateTime.Today.AddDays(5),
DateTime.Today.AddDays(-5)
};
今天的日期应该排在最前面
DateTime today = dates.Where(x => x == DateTime.Today).First();
将来的日期应按今天最近的日期排序(例如今天= 8日,我们的日期18,9,11应排序=&gt;&gt; 9,11,18)
List<DateTime> futureDates = dates.Where(x => x > today).ToList();
futureDates.Sort();
今天年龄较大的日期应该列在降序列表的底部。
List<DateTime> oldDates = dates.Where(x => x < today).OrderByDescending(x => x).ToList();
这是最终的汇总结果:
var final = new List<DateTime>();
final.Add(today);
final.AddRange(futureDates);
final.AddRange(oldDates);