与列表中的 TimeSpan 交互时的空序列
Empty sequence when interacting with TimeSpan in a list
事情是这样的。我有以下列表:
var Diffusions = new List<SetDiffusion>();
这样填写:
Diffusions.Add(new SetDiffusion
{
VideoName = videoName,
Selected_Dif = ConvertToTimespan(TimeParts[1])
});
VideoName
是一个字符串,Selected_Dif
是一个时间跨度。
现在有了上述列表,我需要获得最接近的绝对时间跨度并使用它及其对应的 VideoName
调用一个方法。现在这是我第一次弄乱 class 列表,但据我所知这应该有效:
UpcomingDif = Diffusions.OfType<TimeSpan>()
.OrderBy(t => Math.Abs((t - DateTime.Now.TimeOfDay).Ticks))
.First();
我已经将它与之前没有 .OfType
的 List<Timespan>
一起使用,并且效果很好。但是现在在相同的测试环境中,它会引发一个空序列错误。
知道我的代码有什么问题吗?
谢谢。
最后编辑:
以防万一它可能对某人有所帮助,这是我的计时器初始化(感谢@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
不 return 列表中的任何元素。
完成任务的最简单方法是按时间戳降序排列元素,然后取第一个。
UpcomingDif = Diffusion.OrderByDescending(t => t.Selected_Dif)
.First()
UpcomingDif
现在是 SetDifusion
。如果您只想要到现在的时间跨度,您可以访问 Selected_Dif
属性 并用它减去 DateTime.Now
:
var timeSpan = DateTime.Now - UpcomingDif.Selected_Dif;
事情是这样的。我有以下列表:
var Diffusions = new List<SetDiffusion>();
这样填写:
Diffusions.Add(new SetDiffusion
{
VideoName = videoName,
Selected_Dif = ConvertToTimespan(TimeParts[1])
});
VideoName
是一个字符串,Selected_Dif
是一个时间跨度。
现在有了上述列表,我需要获得最接近的绝对时间跨度并使用它及其对应的 VideoName
调用一个方法。现在这是我第一次弄乱 class 列表,但据我所知这应该有效:
UpcomingDif = Diffusions.OfType<TimeSpan>()
.OrderBy(t => Math.Abs((t - DateTime.Now.TimeOfDay).Ticks))
.First();
我已经将它与之前没有 .OfType
的 List<Timespan>
一起使用,并且效果很好。但是现在在相同的测试环境中,它会引发一个空序列错误。
知道我的代码有什么问题吗?
谢谢。
最后编辑:
以防万一它可能对某人有所帮助,这是我的计时器初始化(感谢@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
不 return 列表中的任何元素。
完成任务的最简单方法是按时间戳降序排列元素,然后取第一个。
UpcomingDif = Diffusion.OrderByDescending(t => t.Selected_Dif)
.First()
UpcomingDif
现在是 SetDifusion
。如果您只想要到现在的时间跨度,您可以访问 Selected_Dif
属性 并用它减去 DateTime.Now
:
var timeSpan = DateTime.Now - UpcomingDif.Selected_Dif;