LINQ to EF で簡単なサブクエリを実行したい
私はこのようなことをしました:
from p in db.SomeTable
let o = db.SomeTableWithDate
.OrderByDescending(t => t.Date)
.FirstOrDefault(lt => lt.SomeValue == value)
select new {p, o}
すべてがコンパイルされ、LINQ は文句を言いませんが、結果は間違っています。生成された SQL は TOP 1 の OUTER APPLY ですが、「ORDER BY」はありません。
私もこれを試しました:
from p in db.SomeTable
select new {
p,
o = db.SomeTableWithDate
.OrderByDescending(t => t.Date)
.FirstOrDefault(lt => lt.SomeValue == value)
}
しかし、私は同じ結果を得ます。(以前の「let」クエリの変数を使用できるため、「let」を好みます)
だからここに私の質問があります.LINQにorderbyで実際のサブクエリを実行させるにはどうすればよいですか?
リンクテーブルから最新の日付を取得したい
解決
ボランからの答えはそれを解決しました。最初に別の場所を作成する必要がありました。
from p in db.SomeTable
let o = db.SomeTableWithDate
.Where(lt => lt.SomeValue == value)
.OrderByDescending(t => t.Date)
.FirstOrDefault()
select new {p, o}