【发布时间】:2014-09-14 11:50:44
【问题描述】:
我们在项目中使用RavenDB,并且我们有一个搜索面板,让用户可以使用不同的条件搜索文档。以建筑年龄为例。这些输入数据是从 web 客户端以查询字符串发送的,我必须将它们转换为 Lucene 语法才能从RavenDB 获得结果,但我认为这对我来说更容易然后依靠 Raven Linq Provider 为我完成这项工作,而不是:
Age_Range : [Ix5 TO NULL]
我可以:
b=>b.Age>=5
那么我要做的就是把这个字符串转换成一个 lambda 表达式。
我现在正在做的是编译这样的代码:
public class BuildingQueryBuilderXYZ:IQueryBuilder<Building>
{
public IRavenQueryable<Building> BuildQuery(IDocumentSession session)
{
return session.Query<Building>().Where(b=>b.Age>=5);
}
}
它正在工作,但我必须为每个请求编译一个程序集,这不是搜索数据库的有效方法。
如果我能找到将这个字符串 b=>b.Age>=5 转换为 lambda 表达式的方法,我想我的问题会解决 :)
【问题讨论】:
标签: c# linq lambda lucene ravendb