Подтвердить что ты не робот

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?

4b9b3361

Ответ 1

Вы можете использовать оператор In. Если я правильно помню, ваш код должен выглядеть так:

using Raven.Client.Linq;

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