Я пытаюсь отобразить обнуляемую дату в моем ответе JSON. В моем контроллере MVC я выполняю следующий запрос:
var requests =
(from r in _context.TestRequests
where r.scheduled_time == null && r.TestRequestRuns.Count > 0
select new
{
id = r.id,
name = r.name,
start = DateAndTimeDisplayString(r.TestRequestRuns.First().start_dt),
end = r.TestRequestRuns.First().end_dt.HasValue
? DateAndTimeDisplayString(r.TestRequestRuns.First().end_dt.Value)
: string.Empty
});
Когда я запускаю requests.ToArray()
, я получаю следующее исключение:
Could not translate expression '
Table(TestRequest)
.Where(r =>
((r.scheduled_time == null) AndAlso (r.TestRequestRuns.Count > 0)))
.Select(r => new <>f__AnonymousType18`4(id = r.id, name = r.name,
start = value(QAWebTools.Controllers.TestRequestsController).
DateAndTimeDisplayString(r.TestRequestRuns.First().start_dt),
end = IIF(r.TestRequestRuns.First().end_dt.HasValue,
value(QAWebTools.Controllers.TestRequestsController).
DateAndTimeDisplayString(r.TestRequestRuns.First().end_dt.Value),
Invoke(value(System.Func`1[System.String])))))'
into SQL and could not treat it as a local expression.
Если я закомментирую строку end =
, кажется, что все работает правильно, поэтому не похоже, что я использую мой локальный метод DateAndTimeDisplayString
, поэтому единственное, о чем я могу думать, это Linq to Sql Тернарные операторы? Я думаю, что раньше использовал троичные операторы, но я не могу вспомнить, делал ли я это в этой кодовой базе или другой кодовой базе (которая использует EF4 вместо L2S).
Это правда, или я упускаю какую-то другую проблему?