Я пытаюсь отобразить время с датой NULL в своем ответе JSON. В моей MVC контроллер Я бегу следующий запрос:Являются ли тройные операторы недействительными для запросов linq-to-sql?
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, не нравится терминам Ternary? Я думаю, что раньше я использовал тернарные операторы, но не могу вспомнить, сделал ли я это в этой базе кода или другой кодовой базе (которая использует EF4 вместо L2S).
Это правда, или я пропустил какую-то другую проблему?
Вы правы! Изменение 'string.empty' до нулевого результата! – KallDrexx
Lucky guess :) Знаете, что вы должны сообщить об этом на http://connect.microsoft.com – fejesjoco