如何使用 linq 按嵌套值列表正确对用户列表进行分组?

问题描述 投票:0回答:1

我有具有此依赖项的列表:

class User
{
   public string Id {get; set;}
   public List<ManagerGroup> ManagerGroups {get; set;} 
}

class ManagerGroup
{
   public string RoleId {get; set;}
   public Manager[] Managers {get; set;}
}

class Manager
{
   public string Id {get; set;}
}

并且想要获取Dictionary,其中

key
是唯一的
Manager.Id
value
是拥有该管理器的Users数组。如果您可以添加按某些
ManagerGroup.RoleIds
排序,将非常感激。

拨弄测试

c# arrays .net linq sorting
1个回答
0
投票
  1. 获取所有经理并进行区分。

  2. managers
    迭代,并从
    users
    列表中过滤元素,该列表包含嵌套
    Managers
    列表中经理的 Id。

var managers = users.SelectMany(x => x.ManagerGroups)
    .SelectMany(x => x.Managers)
    .DistinctBy(x => x.Id)
    .ToList();

var managerAndAssociatedUsers = managers.ToDictionary(
    k => k.Id, 
    v => users
        .Where(x => x.ManagerGroups.Any(mg => mg.Managers.Any(m => m.Id == v.Id)))
        .Select(x => x.Id)
        .ToArray());
© www.soinside.com 2019 - 2024. All rights reserved.