C# Asp MVC实体框架检查权限是否在角色中

C# Asp MVC实体框架检查权限是否在角色中,c#,asp.net-mvc,entity-framework,linq,oop,C#,Asp.net Mvc,Entity Framework,Linq,Oop,我有以下模型,我需要一个方法来检查权限是否在角色中。目前,我正在使用IsPermissionInRole方法实现此功能,该方法执行for循环: public class ApplicationRole : IdentityRole { public ApplicationRole() : base() { } public ApplicationRole(string name) : base(name) { } public virtual ICollection&l

我有以下模型,我需要一个方法来检查权限是否在角色中。目前,我正在使用IsPermissionInRole方法实现此功能,该方法执行for循环:

public class ApplicationRole : IdentityRole
{
    public ApplicationRole() : base() { }
    public ApplicationRole(string name) : base(name) { }

    public virtual ICollection<Permission> Permissions { get; set; }

    public bool IsPermissionInRole(string _permission)
    {
        bool _retVal = false;
        try
        {
            foreach (Permission _perm in Permissions)
            {
                if (_perm.Name == _permission)
                {
                    _retVal = true;
                    break;
                }
            }
        }
        catch (Exception)
        {
        }
        return _retVal;
    }

}
公共类应用程序角色:IdentityRole
{
公共应用程序角色():基(){}
公共应用程序角色(字符串名称):基(名称){}
公共虚拟ICollection权限{get;set;}
公共bool IsPermissionInRole(字符串\u权限)
{
bool _retVal=false;
尝试
{
foreach(权限_permin Permissions)
{
如果(\u perm.Name==\u权限)
{
_retVal=true;
打破
}
}
}
捕获(例外)
{
}
返回_retVal;
}
}

是否有一种更优雅的方法可以做到这一点,也许可以使用一些linq查询?

您可以使用以下方法:

或者更简单

 public bool IsPermissionInRole(string _permission)
 {
    return Permissions.Any(p => p.Name == _permission);
 }
 public bool IsPermissionInRole(string _permission)
 {
    return Permissions.Any(p => p.Name == _permission);
 }