Удалить подсписок из основного списка - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю в MVC Identity и хочу получить роли, которых у пользователя не было, поэтому я создал usersWithRoles LINQ, содержит роли, добавленные к пользователю, а список Roles содержит все роли, поэтому я необходимо удалить usersWithRoles из Roles, чтобы получить новый список, содержащий роли, которых у пользователя не было, это мой код:

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

любой может мне помочь!

1 Ответ

0 голосов
/ 18 сентября 2018

Как насчет .Except()?

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

var missingRoles = allRoles.Except(userRoles);

Он отфильтрует allRoles, удалив все роли, содержащиеся в userRoles.

. См. MS doc .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...