JSONレスポンスにnull可能な日付時刻を表示しようとしています。私のMVCコントローラでは、私は次のクエリを実行しています:3進演算子は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
メソッドの使用ではないようですので、私が考えることができる唯一の事はSqlのLinqは三項演算子を好まないのですか?以前は三項演算子を使っていたと思いますが、このコードベースで実行したか、L2SではなくEF4を使用している別のコードベースで実行したかは分かりません。
これは本当ですか、それとも他の問題がありませんか?
あなたは正しいです! 'string.empty'を単にヌルに変更しました! – KallDrexx
ラッキーな推測:)あなたはhttp://connect.microsoft.comでこれを報告しなければなりません。 – fejesjoco