Вы можете создать статический FactoryMethod (это шаблон) в Vehicle, который будет возвращать объект нужного вам класса.
Что-то вроде этого:
public class Vehicle
{
...
public static Vehicle GetVehicle( VehicleType type, int id )
{
switch( type )
{
case 'C':
return( new Car( id ) );
case 'B':
return( new Bus( id ) );
default:
return( new UnknownVehicle( id ) );
}
}
}
И использовать его вкод вроде этого
public IQueryable<Vehicle> GetAllVehicles()
{
return( from vehicle in dc.Vehicles
select Vehicle.GetVehicle( vehicle.Type, vehicle.ID ) );
}
Хотя для работы переключателя ваш тип должен быть char, а не string.Но вы все равно используете однобуквенные типы.