получение отформатированной строки даты с нулевым значением в запросе LINQ - PullRequest
0 голосов
/ 23 декабря 2018

Похоже, это должно работать:

 var result = (from x in Db.RebateDetail
 where batch != null && batch != "" ? x.BatchNumber.Value == Convert.ToInt32(batch) : x.DatetimeCreated.Date >= Convert.ToDateTime(fromDate).Date && x.DatetimeCreated.Date <= Convert.ToDateTime(toDate).Date
 select new
     {
        id = x.Id,
        batchNumber = x.BatchNumber,
        firstName = x.FirstName,
        checkDate = x.CheckDate.Value.ToString("MM/dd/yy") ?? "",
        checkNumber = x.CheckNumber
     }).ToList();

Ошибка checkDate с 'Обнуляемый объект должен иметь значение.'

Это не то, что ??должен делать?Я пробовал несколько вариантов этого, но не могу сделать его счастливым.

Обновление: это использует Entity Framework и LinqToEF

1 Ответ

0 голосов
/ 23 декабря 2018

В настоящее время «если CheckDate равно нулю», это даст System.InvalidOperationException вместо того, чтобы принимать значение RHS оператора ??, поэтому возникает ошибка «Обнуляемый объект должен иметь значение».

Вам необходимо убедиться, что LHS возвращает значение или RHS.

Вам нужен условный оператор ?:

checkDate = x.CheckDate.HasValue ? 
          x.CheckDate.Value.ToString("MM/dd/yy") : string.Empty
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...