数据库
首页 > 数据库> > CodeGo.net>如何使用EF与单个查询从MSSQL中选择1条记录?

CodeGo.net>如何使用EF与单个查询从MSSQL中选择1条记录?

作者:互联网

简而言之:

我有数据库中包含CreationTime列的记录.我想从过去2天中选择记录,再加上一条随后可能是任何时间的记录(按创建日期desc排序).

因此,从记录(知道今天的日期是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实体框架.

解决方法:

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,entity-framework,sql-server
来源: https://codeday.me/bug/20191211/2105796.html