Эквивалент DateDiff в Linq MVC - PullRequest
1 голос
/ 06 марта 2019

В настоящее время я работаю над страницей сравнения дат, и мой коллега дал SQL-запрос, который мне нужно преобразовать в Linq. но я не очень знаком с DATEDIFF в SQL

Итак, вот SQL-запрос

,case when  DATEDIFF(day, isnull(a.NewWorkerDate,a.Workerdate), a.Workerdate)=0 then 'NEWWORKER' ELSE 'OLDWORKER' End as WorkerType

Я пробовал что-то подобное, но получаю другой вывод

var WorkerType = (from a in db.Workers
                  where a.IsDeleted = false
                   && a.ID == workerId
                  select new WorkerModel{
                       WorkerType = EntityFunctions.DiffDays(a.NewWorkerDate, a.Workerdate) = 0 ? "NEWWORKER" : "OLDWORKER" 
}).FirstOrDefault;

Как будет isnull и где? Заранее спасибо

1 Ответ

0 голосов
/ 06 марта 2019

Во-первых, EntityFunctions устарел, и вместо него рекомендуется использовать System.Data.Entity.DbFunctions.DiffDays. Также вы можете использовать ?? для обработки null значения:

var WorkerType = (from a in db.Workers
                  where a.IsDeleted == false
                   && a.ID == workerId
                  select new {
                       WorkerType = DbFunctions.DiffDays
                                      (a.NewWorkerDate ?? a.Workerdate, a.Workerdate)  == 0 ? 
                                      "NEWWORKER" : "OLDWORKER" 
      }).FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...