与列表中的 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();

我已经将它与之前没有 .OfTypeList<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;