根据日期筛选结果并获取一个前一个值

本文关键字:一个 获取 日期 筛选 结果 | 更新日期: 2023-09-27 18:17:21

我有一个IDbSet,我正在查询如下:

var list = MessageSet.Where(x => x.Date >= fromDate && x.Date <= toDate);

后来我做其他LINQ查询,如Select, OrderBy等。

为了按我想要的方式计算和转换数据,我还需要fromDate之前的最后一个值,我可以得到:

var prevValue = MessageSet.Where(x => x.Date < fromDate).OrderByDescending(x => x.Date).FirstOrDefault();

然而,我正在做一个Join与另一个IQueryable,所以这不是真的为我工作

是否有一种方法来组合这些查询?

根据日期筛选结果并获取一个前一个值

是否可以执行联合操作来获取日期和前一个日期之间的所有条目?

var list = MessageSet.Where(x => x.Date >= fromDate && x.Date <= toDate)
                     .Union(MessageSet
                            .Where(x=>x.Date < fromDate).OrderByDescending(x=>x.Date).Take(1)
    );