如何从列表中删除重复的用户,但合并他们的角色



假设我有一个有名字和角色列表的人的列表:

列表中的每个项目都属于PersonDetails类型:

public class PersonDetails
{
 public int Id { get; set; }
 public string Name { get; set; }
 public List<Role> Roles { get; set; }
}
public class Role
{
 public string Name { get; set; }
}

因此,在我的这些项目列表中,我可能有以下内容:

  1. Id 23 Eric,其角色包含一个具有role.Name="Manager"的角色
  2. Id 23 Eric,其角色包含一个具有role的角色。Name="CEO"
  3. Id 23 Eric,其角色包含一个具有role.Name="CIO"的角色

所以这就是目前的情况,但因为这是我希望我的名单上的同一个人:

  1. Id 23 Eric,其角色包括"经理"、"CEO"、"CIO"

有人能告诉我如何把我的物品清单改成这样吗?

试试这个:

from details in detailsList
group details by new {Id = details.Id, Name = details.Name} into groupedDetails
select new PersonDetails()
{
    Id = groupedDetails.Key.Id,
    Name = groupingDetails.Key.Name,
    Roles = groupingDetails.SelectMany(member => member.Roles).ToList()
}

我还没有对此进行测试,但我认为它会起作用。

最新更新