<分区>
我需要从列表中选择下一个可用日期(如果存在)。 例如,如果我有一个包含三个日期的列表,即 2015 年 12 月 12 日、2016 年 3 月 3 日和 2016 年 4 月 25 日,而今天是 2016 年 1 月 25 日。 我怎样才能恢复到今天的日期?计算该无序列表,我必须检索当前日期旁边的记录。
谢谢
<分区>
我需要从列表中选择下一个可用日期(如果存在)。 例如,如果我有一个包含三个日期的列表,即 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
。
我想这应该足以继续工作了。
关于c# - 在 C# 中从更接近今天的列表中获取下一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34991217/