using System.Collections.Generic;
public static void Main()
List<Vehicle> vehicles = new List<Vehicle>();
Truck scaniaTruck = new Truck();
scaniaTruck.Name = "Scania";
scaniaTruck.Wheels.AddRange(new Wheel[] { new Wheel() { Diameter = 19 }, new Wheel() { Diameter = 19 }, new Wheel() { Diameter = 19 }, new Wheel() { Diameter = 19 }});
vehicles.Add(scaniaTruck);
Truck volvoTruck = new Truck();
volvoTruck.Name = "Volvo";
volvoTruck.Wheels.AddRange(new Wheel[] { new Wheel() { Diameter = 18 }, new Wheel() { Diameter = 18 }, new Wheel() { Diameter = 20 }, new Wheel() { Diameter = 20 }});
vehicles.Add(volvoTruck);
Motorcycle suzukiMotorcycle = new Motorcycle();
suzukiMotorcycle.Wheels.AddRange(new Wheel[] { new Wheel() { Diameter = 17 }, new Wheel() { Diameter = 17 } });
vehicles.Add(suzukiMotorcycle);
Motorcycle hondaMotorcycle = new Motorcycle();
hondaMotorcycle.Wheels.AddRange(new Wheel[] { new Wheel() { Diameter = 16 }, new Wheel() { Diameter = 17 }});
vehicles.Add(hondaMotorcycle);
vehicles = vehicles.OrderBy(vehicle => vehicle.Wheels.Min(wheel => wheel.Diameter)).ToList();
string vehiclesJson = JsonSerializer.Serialize(vehicles);
Console.WriteLine(vehiclesJson);
public int Diameter { get; set; }
public abstract class Vehicle
this.Wheels = new List<Wheel>();
public List<Wheel> Wheels { get; private set;}
public virtual int Seats { get; set; }
public string Name { get; set; }
public class Truck : Vehicle
public bool SupportsTrailer
public override int Seats
public class Motorcycle : Vehicle
public MotorcycleModelType ModelType
public enum MotorcycleModelType