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 ロールに Role.Name = "Manager" のロールが含まれる Eric
  2. ID 23 Eric のロールには、Role.Name = "CEO" のロールが含まれています
  3. ID 23 Eric のロールには、Role.Name = "CIO" のロールが含まれています

それが現在の方法ですが、同じ人物であるため、リストを次のようにしたいと考えています。

  1. Id 23 役割に「マネージャー」、「CEO」、「CIO」を含む Eric

アイテムのリストをこのように変更する方法を誰か教えてもらえますか?

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 に答える