[英]LINQ orderby in subquery
我想在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}
from p in db.SomeTable
let o = db.SomeTableWithDate.Where(lt => lt.SomeValue == value)
.OrderByDescending(t => t.Date)
.FirstOrDefault()
select new {p, o}
因為您在過濾后訂購,所以此查詢也可能具有更好的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.