Это потому, что 'truck' и 'comp' из другой таблицы
truckList = (from truck in _dbcontext.Truck.Where(x => x.ClientId == clientId) //(A)
join comp in _dbcontext.TruckComponent
on truck.Equipment.ProtId equals comp.ComponentId
where truck.EquipmentId > 0 && truck.FieldId > 0 //B
select NewTruckVmFromDbTruck(truck, comp)).AsEnumerable();
truck - из таблицы под названием "Truck", а comp - из таблицы под названием "TruckComponent"
Оба имеют разные идентификаторы. Если вы просто выберете таблицу ' Truck ', вы не получите данные таблицы * TruckComponent .
select NewTruckVmFromDbTruck(truck)).AsEnumerable();
Надеюсь, это поможет