【发布时间】:2013-04-16 10:01:00
【问题描述】:
我想在 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}
【问题讨论】:
-
@boran,我认为是外键。
-
生成的SQL是什么?
标签: c# linq entity-framework