从集合中获取最接近TimeOfDay的时间跨度

我正在寻找一种方法来从最接近当前时间的时间跨度集合中获取时间跨度。

Atm我有以下代码:

var closestTime= timespanCollection.OrderBy(t => Math.Abs((t - DateTime.Now.TimeOfDay).Ticks)).First();

问题是,当时间例如为11:02且时间为11:00时,它将作为最接近的时间,但是我只希望将来的时间。

我正在像一个foreach循环那样猜测,这样做的快速方法是什么?


交互式爱情
浏览 149回答 1
1回答

胡子哥哥

您应该Where用来获取未来的时间跨度。您也可以使用TimeSpan.Duration代替Math.Abs:TimeSpan now = DateTime.Now.TimeOfDay;TimeSpan closestTime = timespanCollection    .Where(ts => ts > now)    .OrderBy(ts => (ts - now).Duration())    .First();
打开App,查看更多内容
随时随地看视频慕课网APP