2012-03-29 3 views
3

결과를 주문하려고 할 때 RavenDB를 사용하고 있는데 문제가 있습니다.RavenDB에서 주문한 결과

다음은 클래스의 샘플입니다. 내 컨트롤러에서

public class Post { 
    public int Id {get;get;} 
    public DateTimeOffset Posted {get;set;} 
    public List<SectionAssignment> Sections{get;set;} 
    public string Headline {get;set;} 
} 
public class SectionAssignment { 
    public int SectionId {get;set;} 
    public int Priority {get;set;} 
} 

내가 특정 섹션에 할당 된 게시물의 집합을 반환하려고에 의해 다음 순서 (내림차순)를 배치하는 속성의 날짜 부분. 그런 다음 SectionAssignment Priority로 정렬하고 싶습니다. 여기에 내가있어 무엇 :

var posts= RavenSession.Query<Post>() 
    .Where(s => s.Sections.Any(sec=>sec.SectionId==5)) 
    .OrderByDescending(s => s.Posted.Date) 
    .ThenBy(s => s.Section.Where(sec => sec.Id == 5).Select(sc => sc.Priority).Single()) 
    .Take(10) 
    .ToList(); 

나는 다음과 같은 예외입니다 :

'을 System.Linq를 입력 할 유형 'System.Linq.Expressions.MethodCallExpressionN '의 개체를 캐스팅 할 수 없습니다. Expressions.MemberExpression '입니다.

왜 이런 일이 발생하는지 알 수 있지만이 작업을 수행하는 방법을 알 수는 없습니다. 제안 사항이 있으십니까?

답변

6

성공한 추측은 실패의 원인이되는 ThenBy 절입니다.

정확하게 기억하면 술어은 주문할 때 다른 입력란을 참조 할 수 없습니다. Lucene의 제한 사항입니다.

해결 방법은 필드로 정렬 우선 순위를 끌어내는 수동 색인을 대신 설정하는 것입니다.

관련 문제