gpt4 book ai didi

c# - Entity Framework 选择大于 DateTime 的实体(加上之前的实体)

转载 作者:行者123 更新时间:2023-11-30 16:17:36 26 4
gpt4 key购买 nike

我有一组具有(除其他外)日期时间值的实体。我想在数据库(使用 Entity Framework )中查询大于特定 DateTime 的所有实体,并从该 DateTime 中及时获取最接近的值。时间点分布不均匀,我只想进行一次数据库往返。

例如: [{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,但不适用于 Entity Framework。您应该使用两个子查询的联合,而不是分组:

db.Orders.Where(o => o.T >= value)
.Union(db.Orders.Where(o => o.T < value)
.OrderByDescending(o => o.T)
.Take(1));

关于c# - Entity Framework 选择大于 DateTime 的实体(加上之前的实体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16933407/

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