Сортировать список объектов по числовым подтипам в VB.NET - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть базовый класс vehicle и у меня есть список различных подклассов (Car,Motorbike, Bicycle). Теперь я хочу получить номер каждого подкласса объектов в списке, отсортированных по убыванию.

Dim ListOfVehicle = New List(Of Vehicle)

ListOfVehicle.Add(New Car(50, "Rot", "Mercedes"))

ListOfVehicle.Add(New Car(70, "Grün", "Audi"))

ListOfVehicle.Add(New Car(20, "Violet", "Tesla"))

ListOfVehicle.Add(New Car(150, "Blau", "BMW"))

ListOfVehicle.Add(New Motorbike(70, "Grün", "Kawasaki"))

ListOfVehicle.Add(New Motorbike(120, "Rot", "Honda"))

ListOfVehicle.Add(New Motorbike(200, "Pink", "BMW"))

ListOfVehicle.Add(New Bicycle(20, "Blau", "Cube"))

ListOfVehicle.Add(New Bicycle(250, "Orange", "BMC"))


Вывод должен выглядеть так:
Автомобиль - 4
Мотоцикл - 3
Велосипед - 2

1 Ответ

1 голос
/ 22 апреля 2020

Используйте ToLookup для подсчета по клавише GetType и сортировки в порядке убывания. Затем выведите с помощью свойства Key и метода Count():

Dim lookup = ListOfVehicle.ToLookup(Function(x) x.[GetType]()).OrderByDescending(Function(x) x.Count())

For each vehicle in lookup
    Console.WriteLine(vehicle.Key.ToString() + " - " + vehicle.Count().ToString())
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...