在 C# 中从接近今天的列表中获取下一个日期

本文关键字:列表 获取 下一个 日期 今天 接近 | 更新日期: 2023-09-27 18:31:48

我需要从列表中选择下一个可用日期(如果存在)。例如,如果我有一个包含三个日期的列表,即 2015 年 12 月 12 日、2016 年 3 月 3 日和 2016 年 4 月 25 日,今天是 2016 年 1 月 25 日。我怎样才能只在今天的日期旁边恢复?计算无序列表,我必须检索当前日期旁边的记录。

谢谢

在 C# 中从接近今天的列表中获取下一个日期

根据评论,这应该对您有用:

List<DateTime> dt;
dt.Sort((a, b) => a.CompareTo(b)); // If your list isnt sorted.
var greaterThanNow = dt.SkipWhile(x => x <= DateTime.Now).First();

说它给了你最后一个元素(在你看来是不正确的)。所以这里有一个完整的例子:

List<DateTime> dt = new List<DateTime>()
{
    new DateTime(2016, 01, 20),
    new DateTime(2016, 02, 10)
};
dt.Sort((a, b) => a.CompareTo(b)); // If your list isnt sorted.
var greaterThanNow = dt.SkipWhile(x => x <= DateTime.Now).First();

这将返回10.02.2016 00:00:00 .

List<DateTime> dt = new List<DateTime>()
{
    new DateTime(2016, 01, 20),
    new DateTime(2016, 01, 05)
};
dt.Sort((a, b) => a.CompareTo(b)); // If your list isnt sorted.
var greaterThanNow = dt.SkipWhile(x => x <= DateTime.Now).First();

这会给你InvalidOperationException.

List<DateTime> dt = new List<DateTime>()
{
    new DateTime(2016, 01, 20),
    new DateTime(2016, 01, 05)
};
dt.Sort((a, b) => a.CompareTo(b)); // If your list isnt sorted.
var greaterThanNow = dt.SkipWhile(x => x <= DateTime.Now).FirstOrDefault();

这将返回01.01.0001 00:00:00 .


我想这应该足以继续工作。