我正在嘗試編寫主屏幕,以便給定用戶根據其權限看到菜單選項。基本上,通過每個菜單選項,查看需要查看哪些權限,然後檢查當前用戶是否具有任何權限。「不能將類型'System.Collections.Generic.IEnumerable <C3S.Models.Permission>'隱式轉換爲'bool'。」
我試圖用的代碼在首頁動作
var userPermissionList = currentUser.Permissions;
List<MenuOption> optionList = context.MenuOptions.Where(mo => mo.Permissions.Intersect(userPermissionList, new PermissionComparer()));
這些線路和我實施的IEqualityComparer的:
public bool Equals(Permission x, Permission y)
{
if (x.Id == y.Id && x.PermissionName.ToLower() == y.PermissionName.ToLower())
{
return true;
}
else
{
return false;
};
}
public int GetHashCode(Permission obj)
{
return obj.Id.GetHashCode();
}
}
然而,在運行時,我得到這些錯誤:
無法將類型 'System.Collections.Generic.IEnumerable'隱式轉換爲 '布爾'。
無法將lambda表達式轉換爲預期的委託類型,因爲 塊中的某些返回類型不會隱式地轉換爲委託返回類型的 。
我錯過了什麼?
你的where子句並不是說應該返回什麼。它應該是這樣的:'.Where(mo => mo.Permissions.Intersect(userPermissionList,new PermissionComparer())。Count()> 0);' –
或者另一種將MenuOptions與用戶的權限結合的邏輯。我不知道你在這兩個對象之間的邏輯是什麼。 –
@RickWolff,您的評論對我最有效。你可以把它移到答案部分,我可以接受它嗎? –