我正在尝试将新的角色提供程序添加到我的MVC5项目中 - 但是在“returns roles.ToArray();”上我得到错误:
Cannot implicitly convert type 'wb.Models.UserRole[]' to 'string[]'
public override string[] GetRolesForUser(string username)
{
var roles = db.UserRole
.Where(x => x.UserName
.Equals(username, StringComparison.CurrentCultureIgnoreCase));
if (roles != null)
return roles.ToArray();
else
return new string[] { }; ;
}
有人可以建议我如何纠正这个问题吗?
答案 0 :(得分:2)
您将返回一组角色,而不是角色名称。选择名称并将它们作为数组返回。
public override string[] GetRolesForUser(string username)
{
var roleNames =
db.UserRole
.Where(x => x.UserName.Equals(username,
StringComparison.CurrentCultureIgnoreCase))
.Select(x => x.RoleName);
if (roleNames.Count() > 0)
return roleNames.ToArray();
else
return new string[] { }; ;
}
答案 1 :(得分:1)
代码中的问题如下:
roles.ToArray();
这会返回一个wb.Models.UserRole
数组,而不是一个字符串数组string[]
。我看到一个选项,就是在调用ToArray()
之前选择一个带有一个字符串属性的匿名类型,该属性将包含您想要的信息。像这样:
var roles = db.UserRole
.Where(x => x.UserName
.Equals(username, StringComparison.CurrentCultureIgnoreCase))
.Select(x => x.RoleName);
我不确定您的类是否具有名为RoleName
的属性,但一般而言,您应该按照字符串序列投影查询结果。然后调用ToArray
将创建一个字符串数组,您将完成更多工作。