我想在 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)
}
但我得到相同的结果。(我更喜欢“让”,因为这样我可以使用上一个“让”查询中的变量)
所以这是我的问题:我怎样才能让 LINQ 用 orderby 做一个真正的子查询?
我想从链接表中获取最新日期
解决方案
来自boran的答案解决了它。我只需要先做一个单独的地方。
from p in db.SomeTable
let o = db.SomeTableWithDate
.Where(lt => lt.SomeValue == value)
.OrderByDescending(t => t.Date)
.FirstOrDefault()
select new {p, o}