Domain-driven design – reference to entity within the aggregate by local ID

How do you properly refer to an entity within an aggregate? For example, by the index of a list (does not seem wise to rearrange the list); a GUID (thought it should be local?); or another incrementing counter?

For example:

Class Cart
{
public IReadOnlyList Items => _items.ToList ();

public AddItem (article element)
{
}

public RemoveItem (/ * Item or ItemId or Index (int)? * /) <- Here
{
_items.Remove (xxxxx); // <- And here
}

private read-only list _items = new list(); // Maybe a different data structure
}

Class article
{
// local identity here?

public int Quantity {received; private set; }

public article (product product)
{
// use required product properties
}

// other article properties
}

It seems wrong that a customer has to return one list of the dare to then use the index to remove the article. Also, how do I enforce a local ID if I instantiate the element outside the class before adding it (would I have a GUID if it's created outside)?

TL; How to handle local identities of entities (ie how local is "local")