我有一个小问题,我买不起最好的,所以我需要一些经验丰富的人的帮助。 即:
我做了一个计算时间从(ZPZ_Von)到(ZPZ_Bis)的方法,现在有一个问题,如果在sql中它在同一天出现零时间,我怎么能计算时间,而忽略这个NULL什么节目告诉我。表示只在sql中显示多少NULL NULL来计算错误所需的时间。
这是我计算错误发生时间的方法:
private TimeSpan CalculateWorkingHours(List<PRAESENZZEIT> arrivals)
{
return new TimeSpan(arrivals.Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));
}
此刻,该方法计算来自基数的所有数据,包括此null并转换为10:16,我需要一个方法,如果sql中有NULL并且计算时间将跳过,在这种情况下它将是对6.41
答案 0 :(得分:0)
如果从数据库填充arrivals
变量,则可以跳过具有空值的记录。或者当您在其上创建List<PRAESENZZEIT>
循环并为Nullable<DateTime>
字段设置默认值然后计算差异时
using(var context = new DataContext)
{
var arrivals = context.TableX.Where(t=>t.Date1 != null || t.Date2 != null).ToList
}
没有测试这段代码是从头顶写的
答案 1 :(得分:0)
使用where子句跳过空值,如下所示:
return new TimeSpan(arrivals
.Where(x => x.ZPZ_Bis.TimeOfDay != null)
.Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));