gpt4 book ai didi

c# - 子查询中的 LINQ orderby

转载 作者:行者123 更新时间:2023-11-30 12:11:09 26 4
gpt4 key购买 nike

我想在 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}

最佳答案

 from p in db.SomeTable
let o = db.SomeTableWithDate.Where(lt => lt.SomeValue == value)
.OrderByDescending(t => t.Date)
.FirstOrDefault()
select new {p, o}

因为您是在过滤后排序,所以这个查询可能也会有更好的性能。

关于c# - 子查询中的 LINQ orderby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16034092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com