2016-08-01 17 views
3

Ich habe das folgende Modell und ich möchte eine Methode, um zu überprüfen, ob eine Berechtigung in einer Rolle ist. Derzeit bin ich der Umsetzung dieses die IsPermissionInRole Methode, die funktioniert eine for-Schleife:Asp MVC Entity Framework Überprüfen, ob Berechtigung in Rolle ist

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; 
    } 

} 

Gibt es eine elegantere Möglichkeit, dies vielleicht zu tun einige Linq-Abfrage verwenden?

Antwort

2

Oder einfacher

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

können Sie wie folgt vorgehen mit Any:

if (Permissions.Any(p => p.Name == _permission)) 
{ 
    _retVal = true; 
}