【问题标题】:Create List of child objects from list of parent object从父对象列表创建子对象列表
【发布时间】:2011-09-07 00:40:48
【问题描述】:
我想从父对象列表中创建子对象列表。就像如果我有一个包含一个成员房间的预订房间列表,那么我想从中创建房间列表。
例如。代码:
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
有没有什么捷径可以代替遍历 for 的方法?
【问题讨论】:
标签:
vb.net
list
collections
【解决方案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()
就是这样。