我想从父对象列表中创建子对象列表。如果我有预订室的列表,其中有一个会员室,那么我想从中创建房间列表。
例如。代码:
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迭代?
答案 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()
就是这样。