【问题标题】: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()
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 2018-12-02
      • 2018-01-02
      • 2021-12-21
      相关资源
      最近更新 更多