在VB.NET中按数字子类型对对象列表进行排序

时间:2020-04-22 12:46:41

标签: vb.net

我有一个基类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 个答案:

答案 0 :(得分:1)

使用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
相关问题