Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在sql中排除NULL并计算小时数的方法_C#_Sql - Fatal编程技术网

C# 在sql中排除NULL并计算小时数的方法

C# 在sql中排除NULL并计算小时数的方法,c#,sql,C#,Sql,我有一个小问题,我负担不起最好的,所以我需要一些帮助,从一个更有经验的人。 即: 我做了一个从(ZPZ_Von)到(ZPZ_Bis)计算时间的方法,现在有一个问题,如果在sql中,时间在同一天显示为零,我如何计算时间,而忽略程序显示的这个空值 仅表示在sql中显示多少个NULL NULL以计算从错误中分离出来的时间 这是我计算出错时间的方法: private TimeSpan CalculateWorkingHours(List<PRAESENZZEIT> arrivals)

我有一个小问题,我负担不起最好的,所以我需要一些帮助,从一个更有经验的人。 即:

我做了一个从(ZPZ_Von)到(ZPZ_Bis)计算时间的方法,现在有一个问题,如果在sql中,时间在同一天显示为零,我如何计算时间,而忽略程序显示的这个空值

仅表示在sql中显示多少个NULL NULL以计算从错误中分离出来的时间

这是我计算出错时间的方法:

  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);