Я пытаюсь взять значение DateTime, и если оно не равно нулю, вернуть строку короткого времени.Мой запрос выглядит следующим образом: (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();
, но это не удается, когда я пытаюсь связать данные с ошибкой:
Не удалось перевестивыражение 'Table (TimePosting) .Where (t => (t.MemberID == Invoke (значение (System.Func 1[System.String])))).Select(t
=> new <>f__AnonymousType8
4 (Date = t.TimeIn.ToShortDateString (), TimeIn = t.TimeIn.ToShortTimeString (),TimeOut = IIF (t.TimeOut.HasValue, (t.TimeOut ?? Invoke (значение (System.Func`1 [System.DateTime]))). ToShortTimeString (), "-------"), часы= "")) 'в SQL и не может обрабатывать его как локальное выражение.
Я также получаю похожую ошибку, если пытаюсь использовать:
TimeOut = t.TimeOut.HasValue ? Convert.ToDateTime(t.TimeOut).ToShortTimeString() : "-------"
однако,если я изменю свойство TimeOut на:
TimeOut = t.TimeOut.HasValue ? t.TimeOut.ToString() : "-------",
, оно будет работать нормально, но не будет форматировать время так, как я хочу (shortTimeString).
что с этим?