如何比较c#中的字符串列表和枚举列表



下面给出了我的用户类

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类如下

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

我的enum在

下面给出
public enum Roles
{
Admin,
Guest,
Accountant
}

使用下面给出的代码比较字符串和枚举值时出现错误(无法将字符串与enum进行比较)

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

=>*这里m.RoleName获取错误(无法将字符串与enum进行比较)

您可能需要以下两种变体之一:

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

或:

User.Roles.Where(m => _roles.Contains((Roles)Enum.Parse(typeof(Roles), m.RoleName)))

你也可以这样比较:

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

最新更新