See the question and my original answer on StackOverflow

What are these collections of string and ints? I suppose they mean something in relation with the Product (for example Name, Id, etc...) so I would rather do something like this:

class ProductCollection : IEnumerable<Product>
{
    public IEnumerator<Product> GetEnumerator()
    {
       ...
    }

    public IEnumerator<string> ProductNames // a helper to enumerate product names
    {
       ...
    }

    public IEnumerator<int> ProductIds // a helper to enumerate product ids
    {
       ...
    }
}