在列表中与TimeSpan交互时为空序列
本文关键字:交互 列表 TimeSpan | 更新日期: 2023-09-27 18:07:00
事情是这样的。我有以下清单:
var Diffusions = new List<SetDiffusion>();
这样填充:
Diffusions.Add(new SetDiffusion
{
VideoName = videoName,
Selected_Dif = ConvertToTimespan(TimeParts[1])
});
VideoName
为字符串,Selected_Dif
为时间跨度。
现在有了上面说的列表,我需要得到最接近的绝对时间跨度,并用它和它相应的VideoName
调用一个方法。现在这是我第一次摆弄类列表,但从我的理解,这应该工作:
UpcomingDif = Diffusions.OfType<TimeSpan>()
.OrderBy(t => Math.Abs((t - DateTime.Now.TimeOfDay).Ticks))
.First();
我已经使用它与以前的List<Timespan>
没有.OfType
,它工作得很好。但是现在在相同的测试环境中,它会引发一个空序列错误。
你知道我的代码有什么问题吗?
谢谢。
最后编辑:
只是以防它可能会帮助别人,这是我的定时器初始化(感谢@Koopakiller):
var diffusion= Diffusions.OrderBy(t => Math.Abs((t.Selected_Dif - DateTime.Now.TimeOfDay).Ticks)).First();
TimeLeft = diffusion.Selected_Dif - DateTime.Now.TimeOfDay;
Diffusions
不包含任何TimeSpan
,这就是为什么OfType
不返回列表中的任何元素。
完成任务的最简单方法是按时间戳降序排列元素,然后取第一个。
UpcomingDif = Diffusion.OrderByDescending(t => t.Selected_Dif)
.First()
UpcomingDif
现在是SetDifusion
。如果您只想要到现在的时间跨度,您可以访问Selected_Dif
属性并用它减去DateTime.Now
:
var timeSpan = DateTime.Now - UpcomingDif.Selected_Dif;