如何选择具有Timespan类型的计算列的记录,其中我只想选择Timespan大于一定数量的记录?
MyRecords.Where(e=>e.Hours>0)
小时的计算方法是从 endtime 列中减去 starttime 列。 上面的代码返回:
运营商'>'不能应用于System.TimeSpan类型的操作数?'和' int'
答案 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.HasValue
和e.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);