【问题标题】:Getting this error "Argument 2 cannot convert from 'System.Collections.Generic.IEnumerable string ' to 'string '"收到此错误“参数 2 无法从 'System.Collections.Generic.IEnumerable string ' 转换为 'string '”
【发布时间】:2021-06-23 23:39:44
【问题描述】:

这是代码行

result = await userManager.AddToRoleAsync(user, model.Where(x => x.IsSelected)
            .Select(y => y.RoleName));

【问题讨论】:

  • AddToRoleAsync 需要一个字符串,而不是字符串序列。添加 Single() 或 First() 或类似于您的 Linq 表达式的内容。

标签: c# visual-studio asp.net-core asp.net-core-mvc asp.net-core-3.1


【解决方案1】:

尝试使用FirstOrDefault 只获取集合的一个值

例子:

result = await userManager.AddToRoleAsync(user, model.Select(y => y.RoleName)
                                                     .FirstOrDefault(x => x.IsSelected)??"");

【讨论】:

    【解决方案2】:

    试试这个:

    var role= model.FirstOrDefault(x => x.IsSelected);
    if(role ==null) ... error;
               
    result = await userManager.AddToRoleAsync(user, role.RoleName);
    

    或许

    var roleName= model.Where(x => x.IsSelected).Select(i=> new {Name=i.RoleName}).FirstOrDefault();
    result = await userManager.AddToRoleAsync(user, roleName.Name);
    

    【讨论】:

    • 已解决,谢谢。
    • 参数接受列表,但我正在传递字符串。我把解决方案放在下面
    【解决方案3】:
    Solved by replacing this code
    

    var roleName=model.Where(x => x.IsSelected).Select(y => y.RoleName).ToList();

            if(roleName!=null)
            {
                foreach (var roleN in roleName)
                {
                    result = await userManager.AddToRoleAsync(user, roleN);
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多