在 C# 中从接近今天的列表中获取下一个日期
本文关键字:列表 获取 下一个 日期 今天 接近 | 更新日期: 2023-09-27 18:31:48
我需要从列表中选择下一个可用日期(如果存在)。例如,如果我有一个包含三个日期的列表,即 2015 年 12 月 12 日、2016 年 3 月 3 日和 2016 年 4 月 25 日,今天是 2016 年 1 月 25 日。我怎样才能只在今天的日期旁边恢复?计算无序列表,我必须检索当前日期旁边的记录。
谢谢
根据评论,这应该对您有用:
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
.
我想这应该足以继续工作。