2012-03-29 172 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;} 
} 

在我的控制,我試圖返回被分配到一個特定章節一組帖子,然後順序(DESC)過的財產的日期部分。然後我想根據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.Expressions.MethodCallExpressionN' 鍵入 「System.Linq的對象。 Expressions.MemberExpression」。

我能看到爲什麼發生這種情況,但我無法弄清楚如何使這項工作。 有什麼建議嗎?

回答

6

一個受過教育的猜測是它是你的ThenBy子句導致它失敗。

如果我沒有記錯,訂購和詢問謂詞不能引用其他字段 - 這是對Lucene的限制。

解決方法是改爲設置一個手動索引,將排序優先級作爲字段提取出來,然後您可以進行排序。