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

时间:2018-05-08 13:10:56

标签: .net vb.net list collections ienumerable

我有一个这样的课程

Public Class Car
    Public Property Brand As String
    Public Property Model As String
    Public Property Horsepower As Integer
End Class

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

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"}}

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

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

2 个答案:

答案 0 :(得分:6)

您可以使用RemoveAll删除不满足您条件的汽车

myCarCollection.RemoveAll(Function(x) x.Brand <> "VW" AndAlso
                          x.Horsepower < 300)

当您向集合中添加Car时,请不要使用由Option Strict set to Off感谢VB编译器提供的自动转换。从长远来看,这种选择比实际情况更麻烦。

答案 1 :(得分:4)

您可以使用RemoveAll

myCarCollection.RemoveAll(Function(c As Car) c.Brand <> "VW" AndAlso
                                             c.Horsepower < 300)