1

我有一个从数据库中获取数据的 Linq 查询。问题是我正在使用“任何”来确定用户是否具有在 api 角色表中的角色。查询如下,它正在处理虚拟数据;但是每当我对数据库运行查询时,我都会收到Local sequence cannot be used in LINQ to SQL implementations of query operators,但 Contains 运算符除外。

_apiRepository.GetQueryable<ApiInstance>() .SelectMany(apiInstance => apiInstance.ApiInstanceRoles) .Where(apiInstanceRole => CurrentUser.UsersInRoles.Any(cr => cr.RoleId == apiInstanceRole.RoleId))

4

1 回答 1

2

尝试用 重写查询Contains,如下所示:

_apiRepository
    .GetQueryable<ApiInstance>()
    .SelectMany(apiInstance => apiInstance.ApiInstanceRoles)
    .Where(apiInstanceRole => CurrentUser
        .UsersInRoles
        .Select(cr =>cr.RoleId)
        .Contains(apiInstanceRole.RoleId))
于 2012-12-30T13:29:08.730 回答