Создать список дочерних объектов из списка родительских объектов - PullRequest
1 голос
/ 02 июня 2011

Я хотел бы создать список дочерних объектов из списка родительских объектов. Например, если у меня есть список бронирования, в котором есть один номер участника, я бы хотел создать из него список номеров.

например. код:

    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 Ответ

1 голос
/ 02 июня 2011

Вы можете использовать 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()

И это все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...