RavenDB:查找范围内最近的日期

RavenDB: Find closest date in range

我正在尝试查询最接近我传递给查询的日期的文档。 问题是 RavenDB 无法翻译我的查询:

InvalidOperationException: Cannot understand how to translate Abs

这是我正在尝试的查询:

_session.Query<ExchangeRate>().OrderBy(d => Math.Abs((date - d.TimeStamp).Ticks)).First();

如果 RavenDB 无法翻译这些 Math 函数,还有哪些其他选项可以编写此类查询?

更新 1

根据 Ayende 的回答,我尝试了以下似乎有效的方法,但不确定它是否是最佳解决方案。它还会考虑日期是否超出可用数据的范围,它只是 returns null 要通过调用代码处理。

        var rateBefore = _session.Query<ExchangeRate>()
            .Where(x => x.TimeStamp.Date <= date.Date)
            .OrderByDescending(x => x.TimeStamp)
            .FirstOrDefault();

        var rateAfter = _session.Query<ExchangeRate>()
            .Where(x => x.TimeStamp.Date >= date.Date)
            .OrderBy(x => x.TimeStamp)
            .FirstOrDefault();

        if (rateBefore == null || rateAfter == null) 
            return rateBefore ?? rateAfter;

        var beforeDiff = Math.Abs(rateBefore.TimeStamp.Ticks - date.Ticks);
        var afterDiff = Math.Abs(rateAfter.TimeStamp.Ticks - date.Ticks);

        return beforeDiff <= afterDiff ? rateBefore : rateAfter;

这需要遍历数据库中的所有数据。 相反,做两个查询。 获得第一个等于或小于日期的一个。 一个获取第一个等于或大于日期的。

然后选择最近的。