0
내 검색어로 전달한 날짜와 가장 가까운 문서를 쿼리하려고합니다. 문제는 RavenDB 내 쿼리를 변환 할 수 없습니다입니다 :RavenDB : 범위가 가장 가까운 날짜를 찾으십시오.
내가 쿼리 시도하고있다 복근을 번역하는 방법을 이해 할 수 없습니다 수학 함수,이 다른 유형의 쿼리를 작성할 수있는 다른 옵션은 무엇입니까? Ayende의 답변에 따라 업데이트 1경우 InvalidOperationException :
_session.Query<ExchangeRate>().OrderBy(d => Math.Abs((date - d.TimeStamp).Ticks)).First();
RavenDB이 번역하지 못할 경우 다음
내가 그 최적의 솔루션 확실하지, 작동하는 것 같다 다음을 시도했다. 또한 날짜가 사용 가능한 데이터 범위를 벗어나면 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;
답변을 기반으로 솔루션을 사용하여 게시물을 업데이트했습니다. 이 문제점이나 개선 사항을 볼 수 있습니까? – JCoder23
게으른 쿼리를 사용하면 한 단계 더 나아갈 수 있으므로 서버에 한 번만 요청할 수 있습니다. http://ravendb.net/docs/article-page/3.0/csharp/client-api/ session/querying/how-to-perform-queries-lazily –