从父对象列表创建子对象列表

时间:2011-06-02 11:41:24

标签: vb.net list collections

我想从父对象列表中创建子对象列表。如果我有预订室的列表,其中有一个会员室,那么我想从中创建房间列表。

例如。代码:

    Dim BookingRoomList As List(Of BookingRoom) = New List(Of BookingRoom)
    Dim RoomList As List(Of Room) = New List(Of Room)

    BookingRoomList = BookingRooms.FillGrid()
    For Each BookingRoomInfo As BookingRoom In BookingRoomList
        RoomList.Add(BookingRoomInfo.RoomInfo)
    Next

是否有任何捷径方法而不是为earch迭代?

1 个答案:

答案 0 :(得分:1)

您可以使用Linq和AddRange方法:

RoomList.AddRange(BookingRoomList.Select(Function(room) room.RoomInfo))

除此之外,您可以大大缩短声明:Dim x As T = New T()相当于Dim x As New T(),您通常应该更喜欢后者。

此外,您BookingRoomList的实例化完全是冗余的(逻辑错误),因为您稍后会覆盖该值。

最后,您可以在构造函数调用中直接初始化房间列表,或者您可以完全省略构造函数调用 - Linq表达式已经返回一个完全成熟的集合。这让我们留下:

Dim BookingRoomList As List(Of BookingRoom) = BookingRooms.FillGrid()
Dim RoomList = BookingRoomList.Select(Function(room) room.RoomInfo)).ToList()

就是这样。