Лучшая практика для удаления элемента из коллекции - PullRequest
0 голосов
/ 08 мая 2018

У меня есть такой класс

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

Теперь, например, Я хочу удалить все автомобили, у которых марка не VW и мощность которых меньше 300. Какой «лучший» способ сделать это? Я видел, что в коллекции есть что-то вроде myCarCollection.Where, может кто-нибудь объяснить, как это сделать?

Редактировать: я знаю, как это сделать с for / foreach, но я думал о более разумном способе сделать это.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы можете использовать RemoveAll:

myCarCollection.RemoveAll(Function(c As Car) c.Brand <> "VW" AndAlso
                                             c.Horsepower < 300)
0 голосов
/ 08 мая 2018

Вы можете удалить автомобили, которые не удовлетворяют вашим условиям, используя RemoveAll

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

. При добавлении автомобиля в коллекцию не используйте автоматическое преобразование, предоставляемое компилятором VB, благодаря опции Строгое установлено на Off .В долгосрочной перспективе у этого варианта больше проблем, чем преимуществ.

...