0

我在WPF下面写了这段代码,但它说:

错误 1 ​​无法将类型“WpfApplication.Role”转换为“字符串”。

在代码中:

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

2 回答 2

3

您查询返回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实体而不仅仅是角色名称,它应该可以工作。

或者将您的方法声明更改为 return List<string>

public List<string> GetUserRoles( string currentUser)

并更改roleslistList<string>

List<string> roleslist = new List<string>();
于 2013-08-21T11:52:08.130 回答
1

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

您的查询似乎返回了一个字符串集合。

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

roleslist.Add(a);

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

var y = from x in dbcon.N_Roles_Users where x.user_name == currentUser select x;
于 2013-08-21T11:53:50.433 回答