Always producing the 'f#' names isn't a good idea, in my opinion. I think a dual representation with an array of columns indexed by integers, and a dictionary of columns indexed by label would be better.