根据 cmets,这应该适合您:
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。
我想这应该足以继续工作了。