我有一个“消息”类:如何在投影为匿名类型时查询RavenDB静态索引?
public class User { public string Name { get;set; } /*Other properties*/ }
public class Message {
public User From { get;set; }
public ICollection<User> To { get;set; }
public string Title { get;set; }
/* Others */
}
而且我喜欢定义的索引,以便:(是的,直出“我一直在下面的教程视频”的)
public class Message_ToFromTitle : AbstractIndexCreationTask
{
public override IndexDefinition CreateIndexDefinition()
{
return new IndexDefinition
{
Map = "from m in docs.Messages select new { Query = new[] { m.Title, m.From.Name, m.To.Select(r => r.Name), } }",
Indexes = {{"Query", FieldIndexing.Analyzed}}
};
}
}
在Management Studio中,我可以很好地查询Query:Chris
之类的东西,它会将Chris的所有Messages
带到“To”,“From”或“Title”中,这非常棒。
我的问题是如何从.NET中查询? 我已经试过:
session.Advanced.LuceneQuery<Message, Message_ToFromTitle>().Where("Query:Chris");
它的工作原理,但我想要做的是:
session.Query<Message, Message_ToFromTitle>().Where(m => m == "Chris");
但是,乌鸦(才怪),不知道该怎么办'm',据推测我需要以某种方式查询Query
。 Advanced
路线是唯一向我开放的路线吗?我很乐意改变索引定义,我使用非通用的AbstractIndexCreationTask
,因为我在末尾做了m.To.Select(r=>r.Name)
位,它不会在C#中编译,而是按照我想要的方式在Raven中进行解释,但是如果需要的话,会很乐意变成一个通用的!