【问题标题】:Delete sub list from main list从主列表中删除子列表
【发布时间】:2018-09-18 09:08:22
【问题描述】:

我在 MVC Identity 工作,想获得用户没有的角色,所以我创建了usersWithRoles LINQ,包含添加到用户的角色,Roles 列表包含所有角色,所以我需要从Roles 中删除usersWithRoles 以获取一个新列表,其中包含用户没有的角色, 这是我的代码:

public JsonResult GetUserRolesToAdd(string Username)
{
    var usersWithRoles = (from user in context.Users.Where(u => u.UserName == Username)
                          select new
                          {
                              UserRoles = (from userRole in user.Roles
                                           join role in context.Roles on userRole.RoleId equals role.Id
                                           select new { RoleName = role.Name, RoleId = role.Id }).ToList()
                          }).ToList();

    var RolesToAdd = (from roles in context.Roles
                      select new
                      {
                          RoleId = roles.Name
                      }).ToList();

    foreach (var item in usersWithRoles)
        RolesToAdd.Remove(
                         //what to write inside removeAll function!
                          );

    var jsonResult = Json(usersWithRoles, JsonRequestBehavior.AllowGet);
    jsonResult.MaxJsonLength = int.MaxValue;
    return jsonResult;
}

任何人都可以帮助我!

【问题讨论】:

    标签: c# list model-view-controller identity


    【解决方案1】:

    .Except() 呢?

    var userRoles = new List<string>();
    var allRoles = new List<string>();
    
    var missingRoles = allRoles.Except(userRoles);
    

    它将通过删除userRoles 中包含的所有角色来过滤allRoles

    请参阅MS doc

    【讨论】:

    • 请注意,第一个列表包含一个保存列表的变量!
    • 我只是在为您指明正确的方向。获取第一个列表,对其进行迭代,您将能够拥有这两个角色列表。
    • 如果您的用户名是唯一的,则只获取一个具有该用户名的用户,您将拥有这两个角色列表。
    猜你喜欢
    • 2022-11-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2020-10-06
    相关资源
    最近更新 更多