2011-09-14 79 views
2

是否有一種簡單的方法通過使用指定的值從列表中刪除對象? 我將2人添加到列表中,現在我怎樣才能在不使用任何循環的情況下通過名稱移除某個人? (如果可能)如何通過對象值從List(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

這將是不可能的,而無需使用某種類型的循環來刪除該項目。如果你想能夠通過名字訪問一個項目,你應該考慮移動到一個'Dictionary '類,其中對象的'Name'是關鍵字。 – 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 =「傑米」)