繁体   English   中英

在Entity Framework中使用行集合中的where

[英]Use where in row collection in Entity Framework

我有以下课程:

  1. 新闻
  2. 邮政许可
  3. 角色

每个新闻都有ListOfPostPermissions(1-many),每个PostPermission具有一个Role(1-1)。

我的名单RoleId ,我想所有的News ,其中PostPermissionRoleId是在列表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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM