0

My User Class is given below

public class User
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string UserName { get; set; }
        public Roles Role { get; set; }
        public List<Role> Roles { get; set; }
    }

My Role class is given below

public class Role
    {
        public int Id { get; set; }
        public string RoleName { get; set; }
    }

My enum is given below

public enum Roles
    {
        Admin,
        Guest,
        Accountant
    }

Getting error(Cannot compare string to enum) when compare string with enum values with the code given below

if(User.Roles.Where(m => _roles.Contains(m.RoleName)).ToList()))
    {

    }

=>* here m.RoleName getting error(Cannot compare string to enum)

Noufal
  • 115
  • 10

2 Answers2

1

You probably want one of these two variants:

User.Roles.Where(m => _roles.Any(r => r.ToString().Contains(m.RoleName)))

Or:

User.Roles.Where(m => _roles.Contains((Roles)Enum.Parse(typeof(Roles), m.RoleName)))
Enigmativity
  • 113,464
  • 11
  • 89
  • 172
0

You can also compare like this:

        if (User.Roles.Any(r=> Enum.GetNames(typeof(Roles)).Contains(r.RoleName)))
        {
            Console.WriteLine("Successed");
        }
        else
        {
            Console.WriteLine("UnAuthrize");
        }
rozturac
  • 11
  • 1