Well, some operations are really simple - others are a bit kludgy - so you might want to redesign some of your approaches to use the easy methods.
To loop over all your wheels, just use a foreach
statement:
using(BikeEntities ctx = new BikeEntities())
{
// assuming you just somehow pick a bike to inspect the wheels for
Bike myBike = ctx.Bikes.FirstOrDefault(b => b.BikeID == 5);
foreach(Wheel w in myBike.Wheels)
{
// do something with your wheel
foreach(Bolt b in w.Bolts)
{
// do something to al the bolts on your wheel
}
}
}
Getting the first, second etc. of a collection is a bit more tricky, since you cannot use the usual array indexing. You can:
- use the
.Skip()
method - but that's a bit clumsy for single object retrieval
- if the collection isn't too big, you could "materialize" it into a
List<T>
and then use array indexing
So either you use something like this:
Wheel firstWheel = myBike.Wheels.FirstOrDefault();
Wheel secondWheel = myBike.Wheels.Skip(1).FirstOrDefault();
or you materialize the collection into a list:
List<Wheel> myWheels = myBike.Wheels.ToList();
Wheel firstWheel = myWheels[0];
Wheel secondWheel = myWheels[1];