I don't fully understand what you're asking. Let me suggest a solution, and you tell me why it wouldn't work.

Assuming your structure was named Struct, I'd use a SortedDictionary<Struct, [anything]> to store your instances. I'd use SortedDictionary instead of Dictionary because: 1) it's easier to write a comparer than it is to write a good override of GetHashCode, and 2) you can adjust the comparer to sort items into the order that you need. To get the array you need out of it, you copy SortedDictionary.Keys to an array.