从集合中删除项目的最佳做法

Det*_*ost 0 .net vb.net collections ienumerable list

我有一个这样的课

Public Class Car
    Public Property Brand As String
    Public Property Model As String
    Public Property Horsepower As Integer
End Class
Run Code Online (Sandbox Code Playgroud)

并且像这样从这个类中创建了一个对象的集合

Dim myCarCollection As List(Of Car) = New List(Of Car) From {
New Car() With {.Brand = "VW", .Model = "Golf", .Horsepower = "100"},
New Car() With {.Brand = "Mercedes", .Model = "C220", .Horsepower = "110"},
New Car() With {.Brand = "Porsche", .Model = "911", .Horsepower = "341"}}
Run Code Online (Sandbox Code Playgroud)

现在,例如,我想删除所有品牌不是大众汽车且马力小于300的汽车.哪种"最好"的方式呢?我看到这个系列有类似的东西myCarCollection.Where,有人可以解释一下如何做到这一点吗?

编辑:我知道如何使用for/ foreach但我正在考虑采用更智能的方法.

Ste*_*eve 6

您可以使用RemoveAll删除不符合您条件的汽车

myCarCollection.RemoveAll(Function(x) x.Brand <> "VW" AndAlso
                          x.Horsepower < 300)
Run Code Online (Sandbox Code Playgroud)

当您向集合中添加Car时,由于Option Strict设置为Off,因此不要使用VB编译器提供的自动转换.从长远来看,这个选择比利益更麻烦.