Why not design the class to hold the "sub class" instances:
public class MenuItem
{
public int ID { get; set; }
...
private List<Icon> _Icons = new List<Icon>();
public List<Icon> Icons { get { return _Icons; }}
...
}
Then all you need is a List<MenuItem> to hold them all.