Метод, который исключает NULL в sql и вычисляет часы - PullRequest
0 голосов
/ 28 мая 2018

У меня есть небольшая проблема, с которой я не могу позволить себе лучшее, поэтому мне нужна помощь от кого-то более опытного.А именно:

Я сделал метод, который считает время от (ZPZ_Von) до (ZPZ_Bis), теперь есть проблема, если в sql он появляется ноль в тот же день для времени, как я могу рассчитать время,игнорируя это NULL То, что мне показала программа.

означает только то, сколько NULL NULL показано в sql для вычисления времени, взятого отдельно от ошибки.

Это мой метод, который вычисляет времякогда была допущена ошибка:

  private TimeSpan CalculateWorkingHours(List<PRAESENZZEIT> arrivals)
    {
        return new TimeSpan(arrivals.Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));
    }

это выглядит из данных моей базы данных: enter image description here

В настоящий момент метод вычисляет все данные изоснование, включающее этот ноль, и преобразованное 10:16, и мне нужен метод, который пропустит, если в sql есть NULL, и вычислит время, в этом случае это будет правильно 6.41

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вы пропускаете нулевые значения с помощью предложения where, что-то вроде этого:

    return new TimeSpan(arrivals
      .Where(x => x.ZPZ_Bis.TimeOfDay != null)
      .Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));
0 голосов
/ 28 мая 2018

Если вы заполните переменную arrivals из своей базы данных, вы можете пропустить записи, которые имеют нулевые значения.Или когда вы создали над ним цикл List<PRAESENZZEIT> и задали значение по умолчанию для полей Nullable<DateTime>, а затем вычислили разницу

using(var context = new DataContext)
{
   var arrivals = context.TableX.Where(t=>t.Date1 != null || t.Date2 != null).ToList
}

Не проверял этот код, написал его с макушки головы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...