C# 在sql中排除NULL并计算小时数的方法
我有一个小问题,我负担不起最好的,所以我需要一些帮助,从一个更有经验的人。 即: 我做了一个从(ZPZ_Von)到(ZPZ_Bis)计算时间的方法,现在有一个问题,如果在sql中,时间在同一天显示为零,我如何计算时间,而忽略程序显示的这个空值 仅表示在sql中显示多少个NULL NULL以计算从错误中分离出来的时间 这是我计算出错时间的方法:C# 在sql中排除NULL并计算小时数的方法,c#,sql,C#,Sql,我有一个小问题,我负担不起最好的,所以我需要一些帮助,从一个更有经验的人。 即: 我做了一个从(ZPZ_Von)到(ZPZ_Bis)计算时间的方法,现在有一个问题,如果在sql中,时间在同一天显示为零,我如何计算时间,而忽略程序显示的这个空值 仅表示在sql中显示多少个NULL NULL以计算从错误中分离出来的时间 这是我计算出错时间的方法: private TimeSpan CalculateWorkingHours(List<PRAESENZZEIT> arrivals)
private TimeSpan CalculateWorkingHours(List<PRAESENZZEIT> arrivals)
{
return new TimeSpan(arrivals.Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));
}
私人时间跨度计算工作小时数(列出到达时间)
{
返回新的时间跨度(arrivals.Sum(x=>(x.ZPZ_Bis.TimeOfDay-x.ZPZ_Von.TimeOfDay).Ticks);
}
这是我的数据库数据的外观:
目前,该方法计算所有来自基础的数据,包括该null并转换为10:16,我需要一个方法,如果sql中存在null,则该方法将跳过并计算时间,在这种情况下,如果从数据库中填写
到达
变量,则可能会跳过具有空值的记录,这是正确的6.41。或者,当您在其上创建列表
循环,并为可空
字段设置默认值,然后计算差值时
using(var context = new DataContext)
{
var arrivals = context.TableX.Where(t=>t.Date1 != null || t.Date2 != null).ToList
}
没有测试这段代码是我从头开始写的使用where子句跳过空值,类似这样:
return new TimeSpan(arrivals
.Where(x => x.ZPZ_Bis.TimeOfDay != null)
.Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));
您正在使用实体框架吗?DBNull检查应该直接在业务层方法上进行。给我更多的细节谢谢!我这样说:返回新的时间跨度(arrivals.Where(x=>x.ZPZ_Von!=DateTime.MinValue).Sum(x=>(x.ZPZ_Bis.TimeOfDay-x.ZPZ_Von.TimeOfDay).Ticks);