gpt4 book ai didi

c# - 如何改进这个 EF 查询?

转载 作者:行者123 更新时间:2023-12-01 19:43:11 25 4
gpt4 key购买 nike

.NET 3.5 框架上的 C#

因此,我正在尝试进行有效的查询,以查找要从系统中清除的所有电子邮件。应清除的是已尝试的电子邮件(日期时间列 LastAttempted 不为空)且保留天数(int 列 RetentionDays)已过。这可行,但我知道它会将所有内容拉回来并在内存中进行过滤。

这就是我现在拥有的

        var emails = dbContext.Emails
.Where(x => x.LastAttempted.HasValue == true)
.ToList()
.Where(x => ((DateTime)x.LastAttempted).AddDays(x.RetentionDays) <= DateTime.Now);

如何更新它,以便它只从 SQL Server 提取我关心的记录?

最佳答案

使用 EntityFunctions.AddDays 在 EF 查询中向 DateTime 添加天数。

var emails = dbContext.Emails
.Where(x => x.LastAttempted.HasValue &&
EntityFunctions.AddDays(x.LastAttempted, x.RetentionDays)
<= DateTime.Now);

关于c# - 如何改进这个 EF 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29434309/

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