c # – What is the best way to index a list of items?

Obviously, lists automatically create their own index. So, basically, I would not need this feature at all. But I thought it was safer in case my list index was changed (for example, adding a new item at the beginning of the list would change the index numbers of all other items in the list. listing).

                public EmpireAgentView ShowEmpireView (int eIndex)
{

foreach (EmpireAgentView in EmpireViews)
{
if (e.EmpireIndex == eIndex)
{
Debug.Log ("Empire Display for Agent:" + e.AgentName);
send e;
}
}

Debug.LogError ("No EmpireAgentView found for this empire:" + eIndex);
return the new EmpireAgentView (9999);
}

So, in this case, I added the property "EmpireIndex" to the EmpireAgentView object. So now, whenever I have to access a specific EmpireAgentView from the EmpireViews list, I'm using ShowEmpireView (1) instead of EmpireViews[1].

Each EmpireAgentView object has unique information about the same Agent object. For example, where the agent is currently located. If we have 4 empires, there will be 4 EmpireAgentView objects in the Agent class. Each empire has its own idea of ​​the current location of the agent. So I need to be able to access specific empires data on this agent. At the present time, I assign a simple int called EmpireIndex to each EmpireAgentView, in order to make sure I have good eyesight for the good empire. If I've just used EmpireViews[3], and this list has rearranged in one way or another (as if you were adding an EmpireAgentView object at the beginning of the list, no doubt) that all this information would be mixed for empires.

Is this the best way to do that? Is there a better way to find it? Or am I too careful and do not I need to add new EmpireView at the beginning of the list? (I am new to C #, is there anything else that would change the index of an item in the list?)