实体框架选择大于DateTime的实体(加上之前的实体)
本文关键字:实体 大于 DateTime 框架 选择 | 更新日期: 2023-09-27 18:17:03
我有一个实体集合,其中包含DateTime值。我想查询DB(使用实体框架(中大于特定DateTime的所有实体,并从该DateTime中及时获取closests值。时间点不是均匀分布的,我只想做一个数据库往返。
例如:〔{T=1},{T=2},}T=3},{T=4}〕
所以。。。如果我在数据库中查询一个时间值大于或等于T=3的实体,我还想得到T=2的值。那是
结果:〔{T=2},{T=3},{T=4}〕
这可能吗?如果没有,在SQL中是否可能?
这将返回两组
from o in db.Orders
group o by o.T >= value into g
select g.Key ? g.OrderBy(x => x.T) :
g.OrderByDescending(x => x.T).Take(1)
一个组将包含具有T >= value
的实体,另一个组之前将具有实体(如果有(。
UPDATE正如@Gert Arnold正确指出的,此查询将与Linq to SQL一起使用,但不能与实体框架一起使用。您不应该使用分组,而应该使用两个子查询的并集:
db.Orders.Where(o => o.T >= value)
.Union(db.Orders.Where(o => o.T < value)
.OrderByDescending(o => o.T)
.Take(1));