JSON応答にnull許容の日時を表示しようとしています。私の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は三項演算子が好きではないということだけが考えられますか?以前に三項演算子を使用したことがあると思いますが、このコードベースで使用したのか、別のコードベース(L2SではなくEF4を使用)で使用したのか思い出せません。
これは本当ですか、それとも他の問題がありませんか?