0

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

列表中的每一项都是 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”

谁能告诉我如何将我的项目列表更改为这样?

4

1 回答 1

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

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

于 2012-07-20T02:10:48.810 回答