簡體   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