Try:
Equipment myEquipment = myProfiles["my name"].Activities["my activity"].Equipment;
However, it would be a good idea to check for null values at each stage.
"but equipment is a string. and how do i check for nulls?"
Well, you could change
Equipment
to
string
...
string myEquipment = myProfiles["my name"].Activities["my activity"].Equipment;
Checking for nulls just means that when ever you access a List, you make sure that what was looked for exists: if it isn't, then it will return a null value. If you try to use that to access another list, your will get an "object not set to an instance..." error.
string equipment = "none";
Profile p = myProfiles[0];
if (p != null)
{
Activity a = p.Activities[0];
if (a != null)
{
equipment = a.Equipment;
}
}
If you want to use the string index version I suggested at the top, you will need to use a Dictionary, rather than a List.