我试图在我的 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)中做到的。
这是真的,还是我错过了其他问题?