That depends on what you then do with the List, and the List
For example you might get sufficient functionality from creating your own List implementation that wraps a List, implementing iterator() with an iterator implementation that iterates over the ViewValues, returning the id.