If you want to do it using eager loading you don't have other choice than project your query to apply an order by to the related entities:
//In Linq to Entities you can project using an anonymous type or a custom class(also known as a DTO)
var cars= context.Cars
.Include("Owner")
.Include("Parts")
.Where(c=>c.id == strID)
.Select(c=>new {//Change this projection at your convinience
Car=c,
Parts= c.Parts.OrderBy(p=>p.PartName),
Owner=c.Owner
});
If you were using a major version of EF (at least 4.1), you could use Explicit Loading as I show below:
var car= context.Cars.Include("Owner").FirstOrDefault(c=>c.id == strID);
context.Entry(car)
.Collection(b => b.Parts)
.Query()
.OrderBy(p => p.PartName)
.Load();