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