无法将类型表类型转换为“字符串”

时间:2013-08-21 11:48:33

标签: c# .net

我在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;
        }
    

2 个答案:

答案 0 :(得分: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实体而不仅仅是角色名称,它应该有效。

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

public List<string> GetUserRoles( string currentUser)

并将roleslist更改为List<string>

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

答案 1 :(得分:1)

List<Role> rolesListRole类型的列表。

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

下面,您尝试将string添加到列表中Role

roleslist.Add(a);

根据您想要添加Role对象本身的内容,在这种情况下,您可以更新查询以返回角色集合:

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