如何替换Linq中的任何一个

时间:2012-12-30 13:23:06

标签: linq linq-to-sql

我有一个从数据库中获取数据的Linq查询。问题是我使用“any”来查找如果用户有一个在api角色表中的角色。查询如下,它正在使用虚拟数据;但每当我对数据库运行查询时,我收到本地序列不能用于除Contains运算符之外的查询运算符的LINQ to SQL实现。

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

1 个答案:

答案 0 :(得分:2)

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

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