我正在使用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;}
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我试图返回一组分配给特定部分的帖子,然后按(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();
Run Code Online (Sandbox Code Playgroud)
我是以下例外:
无法将类型为"System.Linq.Expressions.MethodCallExpressionN"的对象强制转换为"System.Linq.Expressions.MemberExpression".
我可以看到为什么会这样,但我无法弄清楚如何使这项工作.有什么建议?
小智 6
一个有根据的猜测是,你的ThenBy子句导致它失败.
如果我没记错的话,Ordering和Querying 谓词不能引用其他字段 - 这是Lucene的限制.
另一种解决方法是设置一个手动索引,将索引优先级作为一个字段拉出,然后您可以按顺序排序.
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |