我的实体是:
class Resource
{
string Name;
string EmployeeId;
}
Run Code Online (Sandbox Code Playgroud)
如何查询多个员工的资源?我试过这个:
Resource[] FindResourcesByEmployees(string[] employeeIds)
{
return this.Session.Query<Resource>()
.Where(r => employeeIds.Contains(r.EmployeeId))
.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
但是,这给了我NotSupportedException:不支持的方法:包含.然后我尝试了以下方法:
Resource[] FindResourcesByEmployees(string[] employeeIds)
{
return this.Session.Query<Resource>()
.Where(r => employeeIds.Any(v => v == r.EmployeeId))
.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
抛出NotSupportedException:不支持表达式类型:System.Linq.Expressions.TypedParameterException.
在SQL中它将是这样的:
SELECT * FROM resource WHERE employeeid IN (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何在RavenDB中执行此查询?
我有以下文件叫做预订:
{
"CustomerId": 1,
"Items": [
{
"EmployeeId": "employees/1",
"StartTime": "2011-08-15T07:20:00.0000000+03:00",
"EndTime": "2011-08-15T07:40:00.0000000+03:00"
},
{
"EmployeeId": "employees/1",
"StartTime": "2011-08-15T07:40:00.0000000+03:00",
"EndTime": "2011-08-15T09:10:00.0000000+03:00"
},
{
"EmployeeId": "employees/3",
"StartTime": "2011-08-16T07:20:00.0000000+03:00",
"EndTime": "2011-08-16T11:35:00.0000000+03:00"
}
]
"ReservedAt": "2011-10-20T15:28:21.9941878+03:00"
}
Run Code Online (Sandbox Code Playgroud)
另外我有以下投影类:
public class ReservationItemProjection
{
public string ReservationId { get; set; }
public string CustomerId { get; set; }
public string EmployeeId { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我想找到匹配的ReservationItemProjections,我会写什么样的索引和查询?例如:
// invalid example query: …Run Code Online (Sandbox Code Playgroud)