无法将类型表类型转换为';字符串';

本文关键字:字符串 类型转换 类型 | 更新日期: 2023-09-27 18:28:38

我在WPF中写了下面的代码,但它说:

错误1无法将类型"WpfApplication.Role"转换为"string"。

这里的代码:

  1. Roles和N_Roles_Users是数据库表的名称
  2. currentUser是字符串参数
  3. myEntities是数据库的名称。

        public List<Role> GetUserRoles( string currentUser)
        {
            nrcsaEntities dbcon = new nrcsaEntities();
            N_Roles_Users allroles = null;
            List<Role> roleslist = new List<Role>();
            if (allroles == null)
            {
            allroles = new N_Roles_Users();
                {
                var y = from x in dbcon.N_Roles_Users where x.user_name == currentUser select x.role_name;
                foreach (var a in y)
                    {
                    roleslist.Add(a);  //Here it is Generating Error
                    }
                q.ItemsSource = roleslist.ToList();
                }
            }
        return roleslist;
        }
    

无法将类型表类型转换为';字符串';

查询返回x.role_name,它似乎是string:

var y = from x in dbcon.N_Roles_Users
        where x.user_name == currentUser
        select x.role_name;

这就是为什么不能将其分配给List<Role>。将查询更改为选择Role实体,而不是仅选择角色名称,它应该可以工作。

或者更改方法声明以返回List<string>:

public List<string> GetUserRoles( string currentUser)

并将roleslist更改为List<string>

List<string> roleslist = new List<string>();

List<Role> rolesList是一个类型为Role的列表。

您的查询似乎返回了一组字符串。

下面,您尝试将string添加到列表中,它应该是Role

roleslist.Add(a);

从外观上看,您实际上想要添加Role对象本身,在这种情况下,您可以更新查询以返回角色集合:

var y = from x in dbcon.N_Roles_Users where x.user_name == currentUser select x;