Linq查询按时间间隔选择少于" x"

时间:2015-11-03 17:07:29

标签: c# linq

如何选择具有Timespan类型的计算列的记录,其中我只想选择Timespan大于一定数量的记录?

MyRecords.Where(e=>e.Hours>0)

小时的计算方法是从 endtime 列中减去 starttime 列。 上面的代码返回:

  

运营商'>'不能应用于System.TimeSpan类型的操作数?'和' int'

3 个答案:

答案 0 :(得分:3)

您无法直接将TimeSpan对象与int进行比较,您需要使用TimeSpan上的其中一个属性:https://msdn.microsoft.com/en-us/library/system.timespan(v=vs.110).aspx

例如MyRecords.Where( e => e.Hours.HasValue && e.Hours.Value.Milliseconds > 0)

e.Hours.HasValuee.Hours.Value是必需的,因为e实际上是TimeSpan?类型,它是可以为空的类型

我建议您将计算列e.Hours重命名为更具描述性的内容,因为它代表的是TimeSpan?而不仅仅是几个小时。

答案 1 :(得分:0)

尝试:

MyRecords.Where(e=>e.Hours != null && e.Hours.Value.Milliseconds > 0)

答案 2 :(得分:0)

怎么样:

MyRecords.Where(e => e.Hours.HasValue && e.Hours.Value.Hours > 0);