簡體   English   中英

LINQ orderby在子查詢中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM