gpt4 book ai didi

c# - 如何使用带有单个查询的 EF 从 MSSQL 选择 +1 记录?

转载 作者:行者123 更新时间:2023-11-30 16:38:23 25 4
gpt4 key购买 nike

简而言之:

我在数据库中有包含 CreationTime 列的记录。我想选择最近 2 天的记录加上后面的一条记录(按创建日期排序),可以是任何时间。

所以从记录中(知道今天是 3 月 11 日)我想选择所有最多 2 天 + 1 的记录:

1. 2019-03-11
2. 2019-03-11
3. 2019-03-10
4. 2019-03-08
5. 2019-03-07
6. 2019-03-16

所以结果应该包含记录 1,2,3,4。 (4. 尽管它已经 3 天了,但它是我需要的“+1”记录)。

我正在使用 MSSQL 和 .NET 4.6.1 Entity Framework 。

最佳答案

IMO 更简洁的实现方式是编写两个查询:第一个是获取最近两天的数据,第二个是获取早于 2 天的最新记录。

获取最近 2 天的记录:

select * from MyTable where CreationTime between getdate() and getdate() - 2

获取额外记录:

select top 1 * from MyTable where CreationTme < getdate() - 2 order by CreationTime desc

将 EF 与 LINQ 方法结合使用(dc 是数据库上下文):

获取最近 2 天的记录:

dc.Entitites.Where(e => e.CreationTime <= DateTime.Now && e.CreationTime >= DateTime.Now.AddDays(-2));

补充记录:

dc.Entities.Where(e => e.CreationTime < DateTime.Now.AddDays(-2)).OrderByDescending(e => e.CreationTime).First();

关于c# - 如何使用带有单个查询的 EF 从 MSSQL 选择 +1 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55096424/

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