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

时间:2012-07-20 01:58:02

标签: c# linq

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

列表中的每个项目都是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. 的角色
  3. Id 23 Eric的角色包含Role.Name =“CEO”
  4. 的角色
  5. Id 23 Eric的角色包含Role.Name =“CIO”
  6. 的角色

    这就是它当前的样子,但是因为它与我希望我的列表是同一个人:

    1. Id 23 Eric的角色包含“经理”,“CEO”,“CIO”
    2. 有谁能告诉我如何更改我的项目列表?

1 个答案:

答案 0 :(得分:2)

试试这个:

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()
}

我还没有测试过这个,但我认为它会起作用。