gpt4 book ai didi

c# - 使用 Let 进行子查询的 Linq

转载 作者:行者123 更新时间:2023-11-30 14:02:46 24 4
gpt4 key购买 nike

我试图从此 Linq 查询中获取的是所有广告的列表,其中最近关联的日志与 LogType.IsStatus == true 具有 LogType.Name 为 Confirmed 或 Renewed。明确一点,一个 Advert 有很多 Log,每个 Log 有一个 LogType。到目前为止,我有以下内容,但它在 LastOrDefault 上给我一个错误 System.NotSupportedException。

var adverts = (from a in database.Adverts
let lastLog = (from l in a.Logs
where l.LogType.IsStatus == true
orderby l.Created_at
select l).LastOrDefault()
where (lastLog != null)
&&
(lastLog.LogType.Name == "Confirmed" || lastLog.LogType.Name == "Renewed")
orderby a.Created_at descending
select a).ToList();

最佳答案

LastOrDefault() 在 LINQ to Entities 中不受支持(参见 here )。

您可以通过将 let 子查询中的 order by 子句更改为 order by descending 来解决此问题> 然后改用 FirstOrDefault()

var adverts = (from a in database.Adverts
let lastLog = (from l in a.Logs
where l.LogType.IsStatus == true
orderby l.Created_at descending
select l).FirstOrDefault()
where (lastLog != null)
&&
(lastLog.LogType.Name == "Confirmed" || lastLog.LogType.Name == "Renewed")
orderby a.Created_at descending
select a).ToList();

关于c# - 使用 Let 进行子查询的 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5298339/

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