0

observableCollection次のシナリオで を削除および追加する方法を理解するのに苦労しています。

    Dim flightsColl As New ObservableCollection(Of Flight)
    Dim f1 As Flight = New Flight With {.FlightName = "Jet1"}
    Dim f2 As Flight = New Flight With {.FlightName = "Boeing"}

    Dim p1 As Passenger = New Passenger() With {.Name = "Tim", .Address = "address1"}
    Dim p2 As Passenger = New Passenger() With {.Name = "Tom", .Address = "address2"}
    Dim p3 As Passenger = New Passenger() With {.Name = "Tas", .Address = "address3"}

    'add 2 passangers to Jet1

    f1.Passengers.Add(p1)
    f1.Passengers.Add(p2)

    'add passnger3 to boeing
    f2.Passengers.Add(p3)

    'add flight1 & 2 to flight list
    flightsColl.Add(f1)
    flightsColl.Add(f2)  

上記の例では、observablecollection である flightColl があります。
ご覧のとおり、2 つのフライトがあり、1 番目のフライトには 2 人の乗客がいて、2 番目のフライトには 1 人の乗客がいます。

乗客 2(p2) をフライト 2 に移動する必要がある場合
flightsColl
Remove Passenger 2 from flight 1

Add Passenger 2 to flight 2

アップデート

Public Class Flight

Public Property Name() As String
Public Property Passengers As ICollection(Of Passenger)


Public Sub New()
    Me.Appliances = New ObservableCollection(Of Passenger)
End Sub

クラス終了

4

1 に答える 1

0

なぜ flightColl を通過する必要があるのですか? フライトと乗客の両方への参照があります。

f1.Passengers.Remove(p2)

...など

** アップデート **

Dim oldflight As Flight = flightsColl.FirstOrDefault(Function(f) f.FlightName = "oldFlightName")
Dim passenger As Passenger = oldflight.Passengers.FirstOrDefault(Function(p) p.Name = "passengerName")
oldflight.Passengers.Remove(passenger)

Dim newflight As Flight = flightsColl.FirstOrDefault(Function(f) f.FlightName = "newFlightName")
newflight.Passengers.Add(passenger)

それは役に立ちますか?そこにエラーチェックを追加する必要があります(同じ名前の別の乗客を誤って削除したくない場合は、SingleOrDefaultの方が適しています)

于 2013-02-28T11:42:16.950 に答える