2011-06-02 119 views
1

我想從父對象列表創建子對象列表。就像如果我有一個會員室的預訂房間列表,那麼我想從它創建房間列表。創建父對象列表中的子對象列表

例如。代碼:

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 

是否有任何捷徑方法而不是迭代搜索?

回答

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() 

就是這樣。

+0

thnx它的工作... – KoolKabin 2011-06-02 11:50:27

+0

thnx for suggestions too – KoolKabin 2011-06-02 12:03:34