RavenDB:如何使用多个搜索词进行查询
Posted
技术标签:
【中文标题】RavenDB:如何使用多个搜索词进行查询【英文标题】:RavenDB: How to query with multiple search terms 【发布时间】:2011-10-26 07:43:22 【问题描述】:我的实体是:
class Resource
string Name;
string EmployeeId;
如何查询多个员工的资源?我试过这个:
Resource[] FindResourcesByEmployees(string[] employeeIds)
return this.Session.Query<Resource>()
.Where(r => employeeIds.Contains(r.EmployeeId))
.ToArray();
但是,这给了我 NotSupportedException:不支持的方法:包含。然后我尝试了以下方法:
Resource[] FindResourcesByEmployees(string[] employeeIds)
return this.Session.Query<Resource>()
.Where(r => employeeIds.Any(v => v == r.EmployeeId))
.ToArray();
引发 NotSupportedException:不支持表达式类型:System.Linq.Expressions.TypedParameterException。
在 SQL 中会是这样的:
SELECT * FROM resource WHERE employeeid IN (1, 2, 3)
我的问题是,如何在 RavenDB 中执行此查询?
【问题讨论】:
这篇文章可能对你有所帮助***.com/questions/4207739/… 不,这种情况是关于实体本身包含一个集合。在我的例子中,只有查询包含一个集合,而实体不包含集合。 【参考方案1】:您可以使用In
运算符。如果我没记错的话,你的代码应该是这样的:
using Raven.Client.Linq;
Resource[] FindResourcesByEmployees(string[] employeeIds)
return this.Session.Query<Resource>()
.Where(r => r.EmployeeId.In<string>(employeeIds)))
.ToArray();
【讨论】:
还有一点:.In-extension 方法需要“使用 Raven.Client.Linq”以上是关于RavenDB:如何使用多个搜索词进行查询的主要内容,如果未能解决你的问题,请参考以下文章