Я пытаюсь взять значение DateTime, и если оно не является null возвращает короткую временную строку. Мой запрос выглядит так: (TimeIn НЕ NULLABLE, тогда как TimeOut равен NULLABLE)
var times = from t in db.TimePostings
where t.MemberID == member.MemberID
select new
{
Date = t.TimeIn.ToShortDateString(),
TimeIn = t.TimeIn.ToShortTimeString(),
TimeOut = t.TimeOut.HasValue ? t.TimeOut.Value.ToShortTimeString() : "-------"
};
gvTimePostings.DataSource = times;
gvTimePostings.DataBind();
, но это не удается, когда я пытаюсь привязать данные с ошибкой:
Не удалось перевести выражение 'Таблица (TimePosting). Где (t => (t.MemberID == Invoke (value (System.Func
1 [System.String])))). Выберите (t => новый <> f__AnonymousType8
4 (Date = t.TimeIn.ToShortDateString (), TimeIn = t.TimeIn.ToShortTimeString (), TimeOut = IIF (t.TimeOut.HasValue, (t.TimeOut ?? {{1 }} Invoke (value (System.Func`1 [System.DateTime]))). ToShortTimeString (), "-------"), Hours = "")) 'в SQL и не может рассматривать его как локальное выражение .
Я также получаю аналогичную ошибку, если пытаюсь использовать:
TimeOut = t.TimeOut.HasValue ? Convert.ToDateTime(t.TimeOut).ToShortTimeString() : "-------"
, однако, если я изменяю свойство TimeOut на:
TimeOut = t.TimeOut.HasValue ? t.TimeOut.ToString() : "-------",
, оно работает нормально, но не форматирует время так, как мне нужно (shortTimeString).
что это с тобой?