[英]Use where in row collection in Entity Framework
我有以下课程:
每个新闻都有ListOfPostPermissions(1-many),每个PostPermission具有一个Role(1-1)。
我的名单RoleId
,我想所有的News
,其中PostPermission
的RoleId
是在列表RoleId
。
我使用以下代码,但会引发错误:
var roles = _currentUserService.GetCurrentUserRoles(); // List<Guid>
return NewsList.Where(row => row.Permissions.Where(role=>roles.Contains( role.RoleId)).ToList()).ToList();
我收到这些错误:
无法将类型'System.Collections.Generic.List'隐式转换为'bool'
无法将lambda表达式转换为委托类型'System.Func',因为该块中的某些返回类型不能隐式转换为委托返回类型
我该怎么做 ?
您需要使用Any
内部,而不是Where
这样的
return NewsList
.Where(row => row.Permissions.Any(role=>roles.Contains(role.RoleId)))
.ToList();
这是因为外部Where
期望谓词,即返回bool
表达式。 第一个异常消息清楚地表明了这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.