RavenDB:如何使用多个搜索词进行查询

时间:2011-10-26 07:43:22

标签: ravendb

我的实体是:

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中执行此查询?

1 个答案:

答案 0 :(得分:65)

您可以使用In运算符。如果我没记错的话,你的代码应该是这样的:

using Raven.Client.Linq;

Resource[] FindResourcesByEmployees(string[] employeeIds)
{
    return this.Session.Query<Resource>()
        .Where(r => r.EmployeeId.In<string>(employeeIds)))
        .ToArray();
}