Linq从嵌套列表

时间:2016-08-12 13:51:18

标签: c# linq

我有一个像这样的对象

List<Hotel> Hotels;

public class Hotel
{
  List<RoomType> RoomType;
}

public class RoomType
{
  Room Room;
}

public class Room
{
  int RoomId;
}

我想最终得到一个酒店列表,但RoomId的RoomType嵌套列表是不同的。也就是说,如果已经为另一家酒店提供了RoomId,我不想再次添加酒店。我尝试了很多解决方案并尝试了MoreLinq,但我能找到的只是如何获得一个独特的内部列表。

1 个答案:

答案 0 :(得分:2)

根据我的理解,您希望有一个明确的RoomId列表以及每一个Hotel

var result = hotels.SelectMany(hotel => hotel.RoomType.Select(room => new { Id = room.RoomId, Hotel = hotel }))
                   .GroupBy(item => item.Id)
                   .Select(group => group.FirstOrDefault());