2011-09-14 22 views
2

指定された値を使用してリストからオブジェクトを削除する簡単な方法はありますか? 2人をリストに追加すると、どのようにしてループを使用せずに名前で人を削除することができますか? (可能であれば)リスト(Of myClass)からオブジェクトをオブジェクト値で削除するには?

Public Class Form1 
    Public Persons As New List(Of Person) 
    Private Sub Test() 
     Persons.Add(New Person With {.Name = "Jamie", .Age = 99}) 
     Persons.Add(New Person With {.Name = "Adam", .Age = 40}) 

     'How to remove a person from the list having the name "Jamie" ? 
     'Persons.Remove(Name = "Jamie")... ??? 
    End Sub 
End Class 

Public Class Person 
    Public Name As String 
    Public Age As Integer 
End Class 
+0

ある種のループを使用せずにアイテムを削除することは不可能になるだろう。名前でアイテムにアクセスできるようにするには、オブジェクトの 'Name'がキーである' Dictionary クラスに移動することを検討する必要があります。 – Tejs

答えて

6

Persons.RemoveAll(人=> person.Name == "ジェイミー")VBで

Persons.RemoveAll(Function(person) person.Name = "Jamie") 

(感謝Heinzi)

+0

あなたは言語を変更しましたか?私は確信しているC# –

+1

VBで: 'Persons.RemoveAll(Function(person)person.Name =" Jamie ")' – Heinzi

+0

はい私はvb.netに変更しましたが、それは問題ではない、 ) – MilMike

2

これだけです。

Persons.Remove(Persons.Single(Function(person) person.Name = "Jamie")) 
1

さて、いくつかのオプションがあります。

  1. あなたはあなたのタイプのための.Equalsメソッドをオーバーライドし、等価性を決定するためのキーとしてNameプロパティを使用することができます。複数の人が同じ名前を持つ可能性があるので、これはおそらくPersonクラスのための良い考えではありません。

  2. Persons.RemoveAll(関数(人)person.Name =「ジェイミー」)

関連する問題