假设我有一个有名字和角色列表的人的列表:
列表中的每个项目都属于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; }
}
因此,在我的这些项目列表中,我可能有以下内容:
- Id 23 Eric,其角色包含一个具有role.Name="Manager"的角色
- Id 23 Eric,其角色包含一个具有role的角色。Name="CEO"
- Id 23 Eric,其角色包含一个具有role.Name="CIO"的角色
所以这就是目前的情况,但因为这是我希望我的名单上的同一个人:
- 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()
}
我还没有对此进行测试,但我认为它会起作用。