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

标签 c# wpf list date

<分区>

我需要从列表中选择下一个可用日期(如果存在)。 例如,如果我有一个包含三个日期的列表,即 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/

相关文章:

c# - 忽略特定控件及其子控件的全局样式

python - 我该如何修复 : "TypeError: cannot unpack non-iterable NoneType object"

java - 在 Java 8 中使用映射函数时类型转换不起作用

java - 检查 List<String> 是否包含唯一字符串的最快方法

c# - 使用 async/await 是 Web 服务的好主意吗?

c# - 如何在 MainWindow.xaml 中绑定(bind)多个 ViewModel?

c# - 禁止对 Dropbox 使用正则表达式的特定字符

c# - 如何使用 WPF 用户控件关闭父窗口

c# - ASP.NET Core SignalR 使用 Azure AD 返回 401 Unauthorized

c# - 如何从Xml作为对象而不是字符串检索值?