实体框架选择大于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中是否可能?

实体框架选择大于DateTime的实体(加上之前的实体)

这将返回两组

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));