我的实体是:
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中执行此查询?
答案 0 :(得分:65)
您可以使用In
运算符。如果我没记错的话,你的代码应该是这样的:
using Raven.Client.Linq;
Resource[] FindResourcesByEmployees(string[] employeeIds)
{
return this.Session.Query<Resource>()
.Where(r => r.EmployeeId.In<string>(employeeIds)))
.ToArray();
}