4

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}
4

1 に答える 1